c++ - while 循环中的 cin 无法正常工作 (C++)

标签 c++

该程序应检查输入的数字是否为整数。它适用于字符串,但不适用于 double 。

 int test;   
  cout << "Enter the number:" << endl;
  while(true) {
    cin >> test;
    if (!cin || test < 0) {
      cout << "Wrong input, enter the number again:" << endl;
      cin.clear();
      cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }

最佳答案

testint。 istream >> 运算符只是动态转换为 int,然后,您将丢失小数部分。

您可以将 test 定义为 float 并在需要时将其转换为 int

编辑:回答您上次编辑(我没有刷新,所以我错过了这部分),发生的情况是,如果没有 goto,您将循环两次:

  1. 您输入 1.5
  2. test 为 1,且未输入 if,因此 cin 未清理。
  3. 再次循环,cin 立即返回。
  4. test 为 0,因此输入 if 语句并进行提示。

希望这有帮助

关于c++ - while 循环中的 cin 无法正常工作 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19979147/

相关文章:

c++ - 编译器如何确定位域结构的大小?

c++ - 为什么我不能将 cend() 和 cbegin() 传递给 count_if?

c++ - 具有多个文件的 extern 关键字

c++ - cxxTestgen.py 抛出语法错误

c++ - 无法加载嵌入CMake的TGA图像?

c++ - 通过 destruct+move 构造的 move 分配安全吗?

c++ - 在这种情况下,Hinnant 的 unique_ptr 实现是否错误地无法将派生转换为基础?

c++ - 为什么第二个变量在现场没有变化?

C++ zlib 压缩文件中的字符串

c++ - 用于从 C++ 代码中提取函数的正则表达式