用cin(C++)读取字符

Read character with cin (C++)

本文关键字:读取 字符 C++ cin      更新时间:2023-10-16

我试图在XCode 6.01中使此代码正常工作。这是一个小程序,它获取一个数字double和一个char,然后打印该char。

#include <iostream>
using namespace std;
int main ()
{
    char c=' ';
    double d = 0;

    cin >> d >> c;
    cout << "The char is: "<< c;
    return 0;
}

输入"2d"的结果为:"The char is: Program ended with exit code: 0"如您所见,"d"未显示。

如果我尝试输入"2米",它会起作用。(The char is: mProgram ended with exit code: 0)

有人能帮忙吗?

问题1:当您将"2d"发送到cin时,您只将输入值分配给一个变量。如果要分配两个变量,请在("2d")之间添加空格,或分别分配:键入2,按enter键,键入d,再按enter键。

问题2:cin不进行类型检查。当您将无效类型分配给double或int时,您将得到不希望的行为。

如果您从代码中删除字符输入,并且只将输入分配给双d:

int main ()
{
    char c=' ';
    double d = 0;

    // cin >> d >> c;
    cin >> d
    // cout << "The char is: "<< c;
    cout << "d = " << d << endl;
    return 0;
}

对于输入2d:result-->d=0
对于输入2m:结果-->d=2
对于输入2o:result-->d=2
对于输入2a:result-->d=0
对于输入2p:result-->d=0
对于输入2q:result-->d=2

正如您所看到的,有时候cin不知道如何处理输入,只是完全忽略它。有时cin可以识别输入的数字部分并将其存储在变量d中,如果在d之后添加cin>>c,它将把剩余部分放在char c中。

更多解释和代码示例:使用cin获取用户输入

使用GCC编译代码,程序将按预期工作。

cin>>d>>c;//d(double)与c(char)分离