C++ 在c++;getline()不是读取字符串的所有字母,而是一个接一个地接受多个字符串

C++ 在c++;getline()不是读取字符串的所有字母,而是一个接一个地接受多个字符串,c++,string,getline,C++,String,Getline,输出: 2 AMbuj verma Aaaa bBBB Bm Chetan 上面的程序没有读取字符串的第一个字符 这是我得到的输出 我还使用了cin.ignore()您需要做的是将cin.ignore()带到之外,而循环,因为每次循环工作时,它都会取字符串的第一个字母 AMbuj verma aaa bBBB m Chetan cin>>t//测试用例数 cin.ignore(); 而(t--){ 字符串s,a; getline(cin,s),; cout您需要做的是将cin.ignore(

输出:

2
AMbuj verma
Aaaa bBBB
Bm Chetan
上面的程序没有读取字符串的第一个字符

这是我得到的输出


我还使用了
cin.ignore()

您需要做的是将
cin.ignore()
带到
之外,而
循环,因为每次循环工作时,它都会取字符串的第一个字母

AMbuj verma
aaa bBBB
m Chetan
cin>>t//测试用例数
cin.ignore();
而(t--){
字符串s,a;
getline(cin,s),;

cout您需要做的是将
cin.ignore()
带到
循环之外,因为每次循环工作时,它都会取字符串的第一个字母

AMbuj verma
aaa bBBB
m Chetan
cin>>t;//测试用例数
cin.ignore();
而(t--){
字符串s,a;
getline(cin,s),;

cout您正在循环中调用
cin.ignore();
,因此它在每次迭代中将忽略一个字符。因为您只在需要将调用移出循环并在输入后立即使用
操作符>>
时才使用

    cin>>t; //Number of test cases
    cin.ignore();
    while(t--){

        string s,a;
        getline(cin,s);
        cout<<s<<endl;
    }
cin>>t;//测试用例数
cin.ignore();//去掉换行符
而(t--){
字符串s,a;
getline(cin,s),;

cout您正在循环中调用
cin.ignore();
,因此它在每次迭代中将忽略一个字符。因为您只在需要将调用移出循环并在输入后立即使用
操作符>>
时才使用

    cin>>t; //Number of test cases
    cin.ignore();
    while(t--){

        string s,a;
        getline(cin,s);
        cout<<s<<endl;
    }
cin>>t;//测试用例数
cin.ignore();//去掉换行符
而(t--){
字符串s,a;
getline(cin,s),;

cout实际上是的,
cin.ignore()
会消耗您的字符。现在要添加一些详细信息,输入基本上存储在缓冲区中(不用于重定向)。现在,当您使用getline时,它会这样做

cin>>t; //Number of test cases
cin.ignore(); // get rid of newline
while(t--){
    string s,a;
    getline(cin,s);
    cout<<s<<endl;
}
(1)istream&getline(istream&is,string&str,char-delim);

(2) istream&getline(istream&is,string&str);实际上是的,
cin.ignore()
会消耗您的字符。现在要添加一些详细信息,输入基本上存储在缓冲区中(不用于重定向)。现在当您使用getline时,它会这样做

cin>>t; //Number of test cases
cin.ignore(); // get rid of newline
while(t--){
    string s,a;
    getline(cin,s);
    cout<<s<<endl;
}
(1)istream&getline(istream&is,string&str,char-delim);

(2) istream和getline(istream和is、string和str);这就是原因:你忽略了每行的第一个字符不包含,这是一个不应该包含的私有非标准头。谢谢!!我的代码工作正常。这就是原因:你忽略了每行的第一个字符不包含,这是一个不应该包含的私有非标准头。谢谢!!我的代码工作正常。谢谢u!!我的代码被接受了。我删除了字符串a。谢谢!!我的代码被接受了。我删除了字符串a。谢谢你的详细解释!!谢谢你的详细解释!!谢谢!!我将cin.ignore()移到了循环外,得到了正确的输出。谢谢!!我将cin.ignore()移到了循环外,得到了正确的输出。