C++ 遇到换行符时使用getline退出循环

C++ 遇到换行符时使用getline退出循环,c++,C++,这可能是最基本的问题,但我在使用getline退出循环时遇到了一个问题。假设用户在控制台中使用std::cin输入以下单词: /* word word_one word_two word_three word_four */ 假设我们已经定义了一个空的字符串向量向量向量。此特定输入所需的向量必须为:。 我的以下代码是: int main(){ vector< vector<string> > vv; vector<string> v;

这可能是最基本的问题,但我在使用getline退出循环时遇到了一个问题。假设用户在控制台中使用std::cin输入以下单词:

/*
word
word_one
word_two

word_three
word_four
*/
假设我们已经定义了一个空的字符串向量向量向量。此特定输入所需的向量必须为:<,>。 我的以下代码是:

int main(){
    vector< vector<string> > vv;
    vector<string> v;
    string line;
    while(getline(cin, line)){
        if(line == "\n"){
            vv.push_back(v);
            break;
        }
        else{v.push_back(line);}
    }
    return 0;
}
有什么帮助吗?感觉if语句没有检测到\n。它就这样没完没了地继续下去。另外,不要担心include和名称空间

是的,if条件永远不会执行,因为getline会丢弃行尾字符


空行将导致空字符串,而不是包含“\n”的字符串。

问题是您正在检查\n您必须检查的位置。这是因为getline不复制\n字符,因此它将是一个空字符串

using namespace std;

int main(){
    vector< vector<string> > vv;
    vector<string> v;
    string line;
    while(getline(cin, line)){
        if(line == ""){
            cout<<line;
            vv.push_back(v);
            break;
        }
        else v.push_back(line);
    }
    return 0;
}