无法从 cin.get() 获取字符

Can't get char from cin.get()

本文关键字:获取 字符 get cin      更新时间:2023-10-16

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

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

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

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

std::cout << (symbol == 'n') << std::endl;

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);