c++关于cin.get()

img


此程序中,第一次读取555555555,后读取两个space,也就是两个32,可为什么后面的读取内容变成53 52 52了呢,后面不应该是5444444 32 4444 32吗

【以下回答由 GPT 生成】

【问题标题】:关于C++中cin.get()的使用问题 【问题标签】:C++ 【问题内容】:我在以下的C++程序中使用了cin.get()函数。第一次读取了555555555,然后读取了两个空格,也就是两个ASCII码是32的字符。但为什么后面读取的内容变成了53 52 52呢?我认为后面应该是5444444 32 4444 32才对。

【代码】:

#include<iostream>
using namespace std;

int main() {
    int x;
    cin >> x;
    cout << x << endl;
    cout << cin.get() << endl;
    cout << cin.get() << endl;
    cout << cin.get() << endl;
    cout << cin.get() << endl;
    cout << cin.get() << endl;
}

【问题分析】: 你遇到的问题是关于C++中cin.get()函数的使用。根据你提供的代码,我发现你在使用cin.get()函数时存在一些误解。

【解决方案】: 要达到你期望的结果,你可以修改代码如下:

#include<iostream>
using namespace std;

int main() {
    int x;
    cin >> x;
    cout << x << endl;
    cin.ignore(); // 忽略一个字符
    cout << cin.get() << endl;
    cin.ignore(); // 忽略一个字符
    cout << cin.get() << endl;
    cin.ignore(); // 忽略一个字符
    cout << cin.get() << endl;
    cin.ignore(); // 忽略一个字符
    cout << cin.get() << endl;
}

这样修改后,cin.ignore()函数会忽略一个字符,实现你期望的结果。你可以尝试运行修改后的代码,看看是否符合你的预期。

【注意】: 还有一点需要注意的是,cin.get()函数返回的是字符的ASCII码值,而不是字符本身。所以当你输出cin.get()的结果时,会显示对应的ASCII码。如果你希望输出字符本身,可以将cin.get()的返回值强制转换为char类型,然后进行输出。例如,将 cout << cin.get() << endl; 改为 cout << char(cin.get()) << endl;

希望以上解答能对你有所帮助。如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

开始读取,555555555 输入到x,cin.get()往后获取字符两个空格 输出,再往后获取一个字符,即遇到5(544444)但是cin无法读取到5,会被留在缓冲区,则将其ascll码的值打印出来,后面也是一样