我正在进行一些关于c ++的初学者练习,这让我很难过。我可以输入一个数字,但之后我没有选择输入一个字符,它会跳到最后一行。
我知道我可以使用cin>>符号,但我想知道为什么这不起作用。
#include<iostream>
using namespace std;
int main() {
cout << "Enter a number:\n";
int number;
cin >> number;
char symbol;
cout << "Enter a letter:\n";
cin.get(symbol);
cout << number << " " << symbol << endl;
return 0;
}
答案 0 :(得分:8)
您应该从流中删除'\n'
,在输入数字后保留:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
没有它你将阅读换行符。您可以通过以下方式检查:
std::cout << (symbol == '\n') << std::endl;
答案 1 :(得分:2)
\n
之后, cin
将保留在缓冲区中。您可以通过在两次连续读取之间添加空cin.get()
来解决此问题。
cin.get(string1,maxsize);
cin.get();
cin.get(string2,maxsize);
或者您可以使用fflush
:
cin.get(string1,maxsize);
fflush(stdin);
cin.get(string2,maxsize);