提问人:ssharma 提问时间:8/17/2017 更新时间:9/26/2020 访问量:6398
如何在 C++ 中从 stdin 获取变量输入 [复制]
How to take variable input from stdin in C++ [duplicate]
问:
这个问题在这里已经有答案了:
如何从 std::cin 读取到流结束? (2 个答案)
如何通过Enter(c + +)打破循环? (3 个答案)
标准输入流 (stdin) 的文件末尾 (EOF)( 6 个答案)
6年前关闭。
我试图获取字符串和数字的输入变量数量。找到此解决方案链接:
我尝试过这个数字:
#include<iostream>
using namespace std;
int main(){
int np;
while (cin>>np){
cout << np<<endl;
}
return 0;
}
对于字符串:
#include<iostream>
#include<string>
using namespace std;
int main(){
string line;
while (getline(cin, line)){
cout << line <<endl;
}
return 0;
}
但是,当我运行代码时,即使我只是按回车键,它也不会从循环中出来。如果只按回车键,循环应该终止,但这不会发生。
请提供如何实现此功能的建议。
答:
3赞
timrau
8/17/2017
#1
你可以写
while (std::getline(std::cin, line) && !line.empty()) {
// ...
}
仅当提取的字符串为非空时才继续循环。
评论
0赞
phetdam
9/26/2023
这样做的一个缺点是循环在空行上中断,这可能是不可取的。例如,如果您正在读取文件并且有额外的换行符,则上述循环将在检索到的第一个空换行符处中断。但是,如果一个人想阅读,直到没有更多的输入,即直到,可以用 替换。EOF
!line.empty()
!std::cin.eof()
评论
Ctrl+Z
Ctrl+D
Ctrl C