gpt4 book ai didi

c++ - 如何在C++中获取字符串中的输入?

转载 作者:行者123 更新时间:2023-11-30 03:01:21 24 4
gpt4 key购买 nike

我写了下面的函数

 void validateUser(void)
{
string uName;
string uPassword;
char c;

map <char*, char*> authMap;
authMap["balaji"] = "balaji";
authMap["rohan"] = "rohan";

cout << "Please Enter your user name :";
cin >> uName;
cout << "Please Enter your password :";
// initTermios(0);
while((c = getchar()) != '\n')
{
uPassword.push_back(c);
}
cout << "YOU Entered :: "<< uPassword <<std::endl;
}

当我执行上面的函数时,我发现在输入用户名后按下回车键,即使我没有输入任何密码字符串,控件也不会进入while循环。上面的 Ant 解决方案?提前致谢。

最佳答案

由于输入用户名而输入的换行符仍在标准输入中,接下来读取的就是这个,因此循环终止条件立即为假。您需要跳过换行符,这可以使用 ignore() 来实现:

cin.ignore();

建议不要混合使用 C 和 C++ IO 函数(我不确定它们如何交互的确切规则,但我更愿意避免它):

while (cin.get(c) && '\n' != c)
{
uPassword.push_back(c);
}

或者只使用 std::getline() :

getline(cin, uPassword);

正如我在评论中提到的, map 将以字符串文字的地址为键,而不是字符串内容。建议使用map<std::string, std::string>相反。

关于c++ - 如何在C++中获取字符串中的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com