为什么我的C++循环会连续运行多次,无法正常提示用户输入?
问题原因
std::cin >> inputstr读取输入时默认以*空白字符(空格、换行符、制表符等)*作为内容分隔符,每次调用只会读取第一个空白字符之前的内容,剩余未读取的内容会留在输入缓冲区中,不会被清空。- 当输入包含N个空格分隔的单词时,输入缓冲区中会存在N段可被
>>运算符直接读取的非空白内容。第一次循环读取第一个单词后,后续循环调用std::cin >> inputstr会直接从缓冲区读取剩余的单词,不会阻塞等待用户手动输入,因此循环会连续执行N次,对应的Please enter a string:提示也会连续打印N次。
修复方法
如果需要读取包含空格的整行输入,将std::cin >> inputstr替换为std::getline(std::cin, inputstr)即可。getline默认以换行符作为分隔符,可读取整行包含空格的内容。
内容的提问来源于stack exchange,提问作者LTallmadge
相关产品推荐
相关产品推荐

