用cin读取字符(C ++)

时间:2014-09-21 08:16:41

标签: c++ xcode

我尝试使这个代码适用于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”未显示。

如果我尝试输入“2m”,它就可以了。 (The char is: mProgram ended with exit code: 0)

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

问题1:当您向cin发送“2d”时,您只是将输入值分配给一个变量。如果要分配两个变量,请在两者之间添加空格(“2 d”),或单独指定它们:键入2,按Enter键,键入d,再次按Enter键。

问题2:cin不进行类型检查。将无效类型分配给double或int时,将产生不良行为。

如果从代码中删除char输入,只将输入分配给double 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:结果 - &gt; d = 0
对于输入2m:结果 - &gt; d = 2
对于输入2o:结果 - &gt; d = 2
对于输入2a:结果 - &gt; d = 0
对于输入2p:结果 - &gt; d = 0
对于输入2q:结果 - &gt; d = 2

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

更多解释和代码示例:Using cin to get user input

答案 1 :(得分:0)

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

cin&gt;&gt; d&gt;&gt; C; // d(double)与c(char)

分开