6

我正在做一些关于 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;
}
4

2 回答 2

8

您应该'\n'从流中删除,输入数字后保留:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

没有它,您将阅读换行符。您可以通过以下方式检查:

std::cout << (symbol == '\n') << std::endl;
于 2013-09-09T10:52:42.393 回答
2

\n将在第一个之后保留在缓冲区中cincin.get()您可以通过在两个连续读取之间添加一个空来解决此问题。

cin.get(string1,maxsize);
cin.get();
cin.get(string2,maxsize);

或者您可以使用fflush

cin.get(string1,maxsize);
fflush(stdin);
cin.get(string2,maxsize);
于 2013-09-09T11:02:09.203 回答