【问题标题】:Using cin to input a single letter into a char使用 cin 将单个字母输入 char
【发布时间】:2014-07-31 12:37:22
【问题描述】:

我一直在尝试使用“cin”将单个字母输入到名为 letter 的字符中。我必须使用这种方法输入字母,但是每次在“cin”行之后输出字母时,我都会出现无法识别的字符。

int main()
{
char letter[2];
cout << "Enter a letter: ";
cin >> letter;
cout << letter[2];
return 0;
}

输出:

Enter a letter: a
▮

我有时也会得到随机字符输出,例如“1”和“s”。

任何帮助将不胜感激!

谢谢!

【问题讨论】:

  • 如果您想要一个字符,请使用char,而不是数组。此外,letter[2] 不是大小为 2 的数组中的有效元素。
  • char letter[2]; 是一个字符数组,char letter; 是一个字符。

标签: c++ arrays input char cin


【解决方案1】:

您只需设置数组中字母的长度,然后简单地显示。

    int main()
    {
    char single[1];
    cout << "Enter any single letter\n";
    cin >> single;
    cout << "Your letter is\n";
    cout << single;
    return 0;
    }

【讨论】:

    【解决方案2】:

    您没有正确输入或输出字符。 char letter[2] 是 2 个字符的数组,而不是单个字符。你想要char letter。此外,您正在输出letter[2],它是只有两个值的数组的第三个元素(C++ 中的索引从 0 开始;第一个元素是 letter[0],第二个元素是 letter[1])!输出将永远是垃圾。正确的代码应该是:

    char letter;
    cout << "Enter a letter: ";
    cin >> letter;
    cout << letter;
    return 0;
    

    【讨论】:

    • 从技术上讲,输入部分没问题在这种情况下,因为它是一个(显式)字符,而数组是两个。不过,提供触发 UB 的输入太容易了。
    猜你喜欢
    • 2014-05-24
    • 2018-09-13
    • 1970-01-01
    • 2015-06-11
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多