读书人

关于while (getline(cin,str)) 死循环

发布时间: 2013-04-09 16:45:09 作者: rapoo

关于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;

写了一小段程序 想实现一组字符串的输入和输出(包括空格)
现在运行到 while (getline(cin,str))上死循环了 按了ctrl+z也没用 什么原因呀
[解决办法]

#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,这个不能成为循环退出的条件。

读书人网 >C++

热点推荐