我尝试使用gets()
函数输入数据,但每当程序执行到gets
的留置权时,它都会忽略它。
当我在没有先前数据输入的情况下使用gets()
时,它会正常运行。但是当我在数据输入后使用它时会发生问题。
这是在之前的数据输入之后使用它的代码(因此在执行时我无法将数据输入到字符串中):
int main() {
char str[255];
int a = 0;
cin >> a;
if(a == 1) {
gets(str);
cout << "\n" << str << endl;
}
}
我该如何解决这个问题?
注意:cin.getline
也是如此答案 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);
}