2016-11-15 17 views
-3

当用户键入退出它不停止由于某种原因?任何想法我做错了什么? C++getline是否在while循环中工作? 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);  
} 
+8

什么是'names'? –

+0

字符串变量。 –

+4

请更新你的问题,并把所有相关的信息。阅读关于这个:[MCVE]。 –

回答

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