【问题标题】:reuse char array and cin.getline重用 char 数组和 cin.getline
【发布时间】:2018-08-09 11:21:13
【问题描述】:

我无法在圈内第二次或更长时间使用 s1[40] 并且它总是满的,

cin.getline(s1,40) 以后会被忽略

char s1[40], ans = 'y';
while (ans == 'y')
{       
system("cls");
cout << "\n Enter a sentence : ";
cin.getline(s1, 40);
fflush(stdin);

cout << "\n________________________________________\n\n Again?(y/n)";
cin >> ans;
fflush(stdin);
};

【问题讨论】:

标签: c++ char


【解决方案1】:

cin &gt;&gt; ans; 实际上不会删除 eol 所以下一个getline 将读取一个空行,cin &gt;&gt; ans; 将读取行的第一个符号。您应该将ans 设为数组,同时使用getline 两次:

for(;;)
{
    char s1[40]{};
    system("cls");
    cout << "\n Enter a sentence : ";
    cin.getline(s1, 40);
    fflush(stdin);
    if(cin.fail() or cin.bad())
    {
        cout << "fail" << endl;
        break;
    }
    cout << "\n________________________________________\n\n Again?(y/n)";
    char ans[2]{};
    cin.getline(ans, 2);
    fflush(stdin);
    if(cin.fail() or cin.bad())
    {
        cout << "fail" << endl;
        break;
    }
    if(0 != strcmp("y", ans))
    {
        break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    相关资源
    最近更新 更多