c++ - 如何在先前输入后在 C++ 中使用 "gets"函数?

标签 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 也是如此

最佳答案

之后

cin >>a

当你输入a回车时,cin也留下了一个\n字符,因此,当你使用 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);
}

关于c++ - 如何在先前输入后在 C++ 中使用 "gets"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16406333/

相关文章:

C++ 字符串文件重定向差异?

c - 添加 gets() 函数后 printf() 语句的输出未正确显示

c - 漏洞利用开发 - GETS 和 Shellcode

c - 在c中扫描字符串

c++ - 用户定义的数字文字可以紧跟一个点吗?

C++11 线程 boost 容器

c++ - 当需要提升两个参数时,operator+ 不起作用

java - 组合数组索引

c# - 如何判断 Request.Form 中的值是否为数字? (C#)

javascript/jquery 将数组转换为字符串,在每个字符串之前添加一些内容