C++这有什么问题,同时循环
C++ what is wrong with this do while loop
我正在尝试输入一个字符串。当我输入类似 John
的东西时,它工作正常。
但是,如果我输入类似John Smite
的东西,我最终会陷入无限循环和终端崩溃。
string fullname;
do{
cout << "Please input the Full Name of the user: ";
cin >> fullname;
}while(fullname=="");
这个空间正在抛弃cin。你应该使用getline。
你可以试试这个:
do{
cout << "Please input the Full Name of the user: ";
cin >> fullname;
}
while(fullname.length() == 0);
至于为什么你会得到一个无限循环 - operator>>
std::string
的重载将首先丢弃任何前导空格,然后读取到下一个空格或可用输入的末尾。
第二次迭代读取"Smite",然后后续迭代不再有输入。问题是您的实现似乎在尝试读取之前清除了fullname
。但是由于流不再处于良好状态,因此无法再进行读取,并且存在无限循环。
你可以做这样的事情:
string temp;
string fullname;
do {
cin.clear(); // clear any error flags
do {
if (cin >> temp) fullname += temp + ' ';
} while (cin.good());
} while (fullname.empty());
这有一个(好的)副作用,它折叠了多个相邻的空格字符,但它仍然很笨重。
更好的方法是说
do std::getline(std::cin, fullname); while (fullname.empty());
相关文章:
- C++ 而循环问题 Codecademy 参考 [已解决]
- 按升序对数组进行排序嵌套循环问题
- 我在C 初学者中发现了无限的循环问题
- 冰雹序列C 函数需要计算序列的长度.无限循环问题
- QML&C++应用程序中的绑定循环问题
- 跳跃游戏中嵌套的循环问题
- 在文件中重复文本 - 循环问题
- C 代码循环问题
- C 如果/其他循环问题
- C 文件输入流循环问题
- C++ 中对象的循环问题
- 另一个C CIN循环问题
- C 华氏度到摄氏(反之亦然)循环问题
- C 完美的数字,带有嵌套循环问题
- 遇到 while 循环问题
- C++无限循环问题
- C++闹钟,循环问题
- 循环问题
- 简单的嵌套循环问题.*形状*
- C++数组循环问题仍然需要帮助