如何在条件表达式中使用 'cin' 正确退出 while 循环?(C++、CLion)
How can I properly exit a while loop with 'cin' in the conditional expression?(C++, CLion)
我是 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,程序立即结束,return 值为 0。
任何帮助将不胜感激,为什么这种情况一直发生。谢谢!
------------编辑----------------
目前有一些争论认为 ctrl + z 不表示 CLion(在 windows 上运行)的 EOF。在这种情况下,有人知道 CLion 的任何解决方案吗?
Ctrl + D
表示EOF,但它只在Linux中有效,如果你想在windows或cmd中将EOF发送到你的程序,你需要使用Ctrl+Z
,你可以从这个问题中看到更多 Ctrl+D doesn't stop application from executing in command window
并且 Ctrl+Z
在我的 windows 和 code::block IDE
中工作正常
我是 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,程序立即结束,return 值为 0。
任何帮助将不胜感激,为什么这种情况一直发生。谢谢!
------------编辑----------------
目前有一些争论认为 ctrl + z 不表示 CLion(在 windows 上运行)的 EOF。在这种情况下,有人知道 CLion 的任何解决方案吗?
Ctrl + D
表示EOF,但它只在Linux中有效,如果你想在windows或cmd中将EOF发送到你的程序,你需要使用Ctrl+Z
,你可以从这个问题中看到更多 Ctrl+D doesn't stop application from executing in command window
并且 Ctrl+Z
在我的 windows 和 code::block IDE