0

编辑:我的最后一个问题是如何在我输入的数字之前获得一个空格,然后输入一个 . 在句末?

原始问题:

我正在学习 C++。这是我的代码

#include <iostream>

int main() {
    int iNum;
    std::cout << "Please enter your favorite number" << std::endl;
    std::cin >> iNum;
    std::cout << "Your favorite number is" << std::cout << iNum << std::endl;
    return 0;
}

我删除了空格以使其更易于阅读。如果我在被问到时输入 4,我希望输出是你最喜欢的数字是 4。相反,它说,你最喜欢的数字是 51ABC3E84。最后一个数字将永远是我选择的任何数字。我在搞砸什么以获得奇怪的输出?感谢您对一个非常菜鸟程序员的帮助。

4

3 回答 3

4

在您检索输入后删除第二个std::cout,这在您的程序中没有任何用途。

更正后的行应该是:(更新以反映问题的更新部分)

std::cout << "Your favorite number is " << iNum << "." << std::endl;

当您发送std::cout到流中时,您实际上是在让std::cout对象尝试将自己处理为要打印的东西。std::cout在这种情况下,它似乎将其解释为以十六进制表示的 32 位值(可能是 的内存位置)。输出中“51ABC3E8”末尾的“4”是取自输入的变量的值。

于 2013-04-15T17:58:51.080 回答
3
 std::cout << "Your favorite number is" << std::cout << iNum << std::endl;
                                        //^^You are printing cout

应该

std::cout << "Your favorite number is"  << iNum << std::endl;
于 2013-04-15T17:59:10.763 回答
0

你只需要说std::cout一次。在初始之后cout,您只需将所有想要的输出链接起来,<<直到语句以;. 当你把它放在<<你的代码中时,你实际上是在打印cout为转换为void*.

std::cout << "Your favorite number is" << iNum << std::endl;应该为您解决问题。

编辑:如果你想要一个空格和句号,只需将它们放在你的输出行中:

std::cout << "Your favorite number is " << iNum << '.' << std::endl;
于 2013-04-15T18:03:20.303 回答