关于while (getline(cin,str)) 死循环
- C/C++ code
#include <iostream>#include <vector>#include <string>using namespace std; int main() { string str; vector<string> svec; while (getline(cin,str)) { svec.push_back(str); } for(vector<string>::size_type ix=0;ix<svec.size();ix++) { cout<<svec[ix]<<endl; } return 0;
写了一小段程序 想实现一组字符串的输入和输出(包括空格)
现在运行到 while (getline(cin,str))上死循环了 按了ctrl+z也没用 什么原因呀
[解决办法]
- C/C++ code
#include <iostream>#include <vector>#include <string>using namespace std; int main() { string str; vector<string> svec; getline(cin,str); while (str!="") //空行时退出 { svec.push_back(str); getline(cin,str); } for(vector<string>::size_type ix=0;ix<svec.size();ix++) { cout<<svec[ix]<<endl; } return 0;
[解决办法]
楼上正解
istream& getline ( istream& is, string& str, char delim );
istream& getline ( istream& is, string& str );
Return Value
The same as parameter is.
返回值就是第一个参数,你这里是cin,没有输入的时候cin也不会成为NULL,这个不能成为循环退出的条件。