如何在上次输入后在C++中使用"获取"功能?

afr*_*0ck 2 c++ string gets

我试图用gets()函数输入数据,但是每当程序执行到了lien时gets,它就会忽略它.

当我gets()没有先前的数据输入使用时,它运行正常.但是当我在数据输入后使用它时会发生问题.

这是在之前的数据输入之后使用它的代码(所以在执行中我不能将数据输入到字符串):

int main() {
    char str[255];
    int a = 0;
    cin >> a;
    if(a == 1) {
        gets(str);
        cout << "\n" << str << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?

注意:cin.getline也是如此

tao*_*ocp 6

cin >>a
Run Code Online (Sandbox Code Playgroud)

当你输入a并输入时,还有一个\n字符cin,因此,当你使用cin.getline()gets(str)它将读取该换行符时.

尝试以下方法:

cin >>a;
cin.ignore(); //^^this is necessary
if(a==1){
    gets(str);
}
Run Code Online (Sandbox Code Playgroud)

你最好用C++的方式读取输入:

cin >> a;
cin.ignore();
string str;
if (a == 1)
{
   getline(cin, str);
}
Run Code Online (Sandbox Code Playgroud)