我尝试使用 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/