【问题标题】:What have I missed in this while-loop? [closed]我在这个 while 循环中错过了什么? [关闭]
【发布时间】:2019-08-08 09:33:52
【问题描述】:

我正在尝试编写一个将名称读取为 C 样式字符串的简单程序。 然后将名称垂直打印,每行一个字符。

目前当程序提示用户输入他们的名字时,例如。亨利詹姆斯,只有“亨利”是垂直打印的。它在名称之间的中断处停止打印。

char myName[ 64 ] = "";
cout << "Enter your name: ";
cin.get( myName, 64 );

int i = 0;
while ( myName [ i ] != ' ' )
    {
        cout << myName[ i ] << endl;
        i++;
    }



getch();
return 0;

我尝试将 cin.ignore() 放在 cin.get() 之前的行,但这最终会破坏程序。我在 while 循环中遗漏了什么?

【问题讨论】:

  • 您明确写到您的循环应该在 ' ' 空格字符处停止。一切都符合预期:-)
  • 如果您每行输入多个单词,并且希望它们 all 在一个字符串中,请使用 std::getline 。这就是该功能的真正用途。
  • 哈!愚蠢的错误,谢谢:)

标签: c++ while-loop control-structure


【解决方案1】:

你明确写到你的循环应该在' '空格字符处停止。一切都符合预期:-)

如果要打印到 C 样式字符串的结尾,请检查是否为 0 的终止字符。

while ( myName [ i ] != '\0' )

【讨论】:

    猜你喜欢
    • 2014-03-24
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多