我运行以下代码段,希望当我按新行(Enter键)时,程序将暂停,但它不会这样做,知道是什么问题吗?谢谢。
#include <bits/stdc++.h>
using namespace std;
int main() {
string s ;
while(getline(cin ,s)){
cout << s << endl ;
}
}
答案 0 :(得分:1)
按Enter键可结束一行。如果该行上没有其他文本,则为空行,但仍为一行。
有两种方法可以解决此问题。
首先,根据您的操作系统,ctrl-D或ctrl-Z都将像文件结尾一样,并且对getline
的调用将失败,从而结束循环。
第二,如果您希望空行结束循环,只需检查一下即可:
while (getline(cin, s) && s.length() != 0)
std::cout << s << '\n';
答案 1 :(得分:0)
按Enter就像输入一个空行,您没有为退出程序设置任何条件。除非您强行退出它,否则它将保持无限。在while()中实现一个退出条件,以便当不满足该条件时,循环将退出,并且显然将getline()放入其中以继续询问输入提示。