c++ - 为什么我的循环连续运行多次而不提示我输入?
问题描述
while (inputstr != "The End") {
// Read in a String from the user
std::cout << "Please enter a string:\n";
std::cin >> inputstr;
}
这是我用 C++ 编写的代码。出于某种原因,每当我输入一个字符串时,如果该字符串有多个单词,例如“hello hello”,那么“请输入一个字符串:”会连续打印 2 次,而不是只打印一次。如果我输入一个单词字符串,它只会打印一次。如果我输入一个 3 个单词的字符串,它会打印该行 3 次,依此类推。
解决方案
在您的代码中,std::cin >> inputstr;
cin 将只读取一个单词(表示空格前的字符串)。空格后 cin 会将输入视为下一个字符串。
解决方案是在 like 的地方使用getline()
函数cin
:
while (inputstr != "The End") {
// Read in a String from the user
std::cout << "Please enter a string:\n";
// std::cin >> inputstr;
getline (cin , inputstr);
}
推荐阅读
- html - 给定的代码应该使 div 标题浮动到右上角,但这样做时会移动几个像素。为什么它会自己移动?
- c++ - 如何从 findcontour Opencv C++ 放大每个矩形(边界框)
- mysql - 在 asp.net 核心中按 id 过滤 GET 查询的问题。获得正确数量的行,但都完全相同
- html - HTML 不打印烧瓶返回的全名
- c# - 在没有模型绑定的情况下发布到 .NET Core Web API 控制器
- javascript - LocalStorage 不保留值
- c++ - 获得向量/数组数据大小参考的好语法?
- javascript - 调用返回数字为 fn(10) 或 fn * 10 的函数
- python - 2003: Can't connect to MySQL server on '127.0.0.1:10652' (10061 No connection could be made because the target machine拒绝了)
- reactjs - React 本机 ref 属性:Function vs React.createRef()