【问题标题】:How can I properly exit a while loop with 'cin' in the conditional expression?(C++, CLion) [duplicate]如何在条件表达式中正确退出带有“cin”的while循环?(C++,CLion)[重复]
【发布时间】:2018-02-21 13:52:01
【问题描述】:

我对 C++ 还很陌生,但在使用这个简单的代码时遇到了麻烦:

#include <iostream>
using namespace std;

int main() {
  int NumberOfNonBlanks = 0;
  int NumberOfUpperCase = 0;
  char c;
  while (cin >> c) {
    ++NumberOfNonBlanks;
    if ((c>='A' && (c <= 'Z'))) {
      ++NumberOfUpperCase;
    }
  }
  cout << "Nonblank characters : " << NumberOfNonBlanks << endl 
       << "Uppercase characters : " << NumberOfUpperCase << endl;
}

我的操作系统是 Windows,Ctrl+D 似乎退出了循环(Ctrl+Z 没有做任何事情),但问题是它也结束了整个程序。因此,我在代码中的最后一行没有做任何事情......例如,如果我将输入输入为:

BLUE

然后按Ctrl+D,程序立即结束,返回值0。

任何帮助将不胜感激为什么这种情况不断发生。谢谢!

-------------编辑------

目前有人认为 ctrl + z 不表示 CLion 的 EOF(在 Windows 上运行)。在这种情况下,有人知道 CLion 的任何解决方案吗?

【问题讨论】:

  • Ctrl+Z 然后返回应该可以工作(对我有用)
  • but the problem is that it ends the whole program as well 为什么不结束?在循环之后你没有做任何阻塞,是吗?

标签: c++ cin


【解决方案1】:

Ctrl + D是EOF的意思,但它只在Linux下有效,如果你想在windows或cmd中给你的程序发送EOF,你需要使用Ctrl+Z,你可以从这个问题Ctrl+D doesn't stop application from executing in command window 看到更多/p>

Ctrl+Z 在我的窗口中使用 code::block IDE 可以正常工作

【讨论】:

  • 嗯,但我使用的是 CLion 而不是 cmd,在控制台中按 ctrl+z 没有任何区别......你知道为什么吗?
  • 看来只是Clion的一个bug,这里有一些解决方案sending EOF to stdin in Clion IDE,但是我没有Clion所以我没有测试它是否有效
猜你喜欢
  • 2014-09-08
  • 2014-04-27
  • 2021-06-27
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
相关资源
最近更新 更多