代码之家  ›  专栏  ›  技术社区  ›  user8336529

如何在条件表达式中正确退出带有“cin”的while循环?(C++,CLion)[重复]

  •  0
  • user8336529  · 技术社区  · 7 年前

    我对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(在windows上操作)的EOF。在这种情况下,有人知道CLion的解决方案吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Huanfeng.Xu    7 年前

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

    Ctrl+Z 使用代码::block IDE在我的windows中运行良好