首页 > 解决方案 > 为什么我的循环连续运行多次而不提示我输入?

问题描述

       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 次,依此类推。

标签: c++

解决方案


在您的代码中,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);
}

推荐阅读