关于while (getline(cin,str)) 死循环解决方案
关于while (getline(cin,str)) 死循环
写了一小段程序 想实现一组字符串的输入和输出(包括空格)
现在运行到 while (getline(cin,str))上死循环了 按了ctrl+z也没用 什么原因呀
------解决方案--------------------
------解决方案--------------------
楼上正解
istream& getline ( istream& is, string& str, char delim );
istream& getline ( istream& is, string& str );
Return Value
The same as parameter is.
返回值就是第一个参数,你这里是cin,没有输入的时候cin也不会成为NULL,这个不能成为循环退出的条件。
#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,这个不能成为循环退出的条件。