当用户类型退出时,由于某种原因它不会停止?我有什么想法我做错了吗? C ++
vector<string> v;
while(true)
{
cout << "Enter a string (quit to stop)" << endl;
getline(cin,names);
if(names=="quit")break;
v.push_back(names);
addFullName(names);
}
void addFullName(string str)
{
string word = " ";
int pos = str.find(word);
string s2;
string s3 = str.substr(pos+word.length());
string s4 = str.substr(pos = 0, pos);
s2 += s3 + ", " + s4;
v.push_back(s2);
}
答案 0 :(得分:1)
是的,您可以在while循环中使用std::getline
。实际上,您可以将它用作while循环的标记。例如,如果您正在读取文件,则以下内容将读取每一行(并打印出来),直到EOF:
std::string line;
std::ifstream fin{"some_file.txt"};
while(std::getline(fin, line)) {
std::cout << line << '\n';
}
至于您的问题,如果names
是std::string
,它应该有效。如果不是(即,它是char *
),则需要包含缓冲区大小。如果可以的话,请使用std::string
。