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

时间:2013-05-06 20:02:33

标签: c++ string gets

我尝试使用gets()函数输入数据,但每当程序执行到gets的留置权时,它都会忽略它。

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

这是在之前的数据输入之后使用它的代码(因此在执行时我无法将数据输入到字符串中):

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

我该如何解决这个问题?

注意:cin.getline

也是如此

1 个答案:

答案 0 :(得分:6)

cin >>a

当您输入a并输入时,\n还会留下cin个字符,因此,当您使用cin.getline()gets(str)时,它会读取该换行符。

尝试以下方法:

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

你最好用C ++阅读输入法:

cin >> a;
cin.ignore();
string str;
if (a == 1)
{
   getline(cin, str);
}