getline是否在while循环中工作? C ++

时间:2016-11-15 18:40:30

标签: c++ string vector while-loop

当用户类型退出时,由于某种原因它不会停止?我有什么想法我做错了吗? 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);    
}

1 个答案:

答案 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';
}

至于您的问题,如果namesstd::string,它应该有效。如果不是(即,它是char *),则需要包含缓冲区大小。如果可以的话,请使用std::string