关于while (getline(cin,str)) 死循环
#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;
#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,这个不能成为循环退出的条件。