【问题标题】:C++ only prints one statementC++ 只打印一条语句
【发布时间】:2015-04-14 15:58:49
【问题描述】:

我刚刚开始学习 C++ 编程语言,在 OSX 10.9.5 上使用 Xamarin Studio 作为我的 IDE,并遵循 Juan Soulie 的 C++ 语言教程。

我遵循指南所说的一切,但每当我编译这段代码时:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World! ";
    cout << "I'm a C++ program";
    return 0;
}

终端屏幕出现并显示这个!

Hello World!  


press any key to continue... logout

[process completed]

这是我做错了什么还是我的编译器有问题?我也尝试过 Xcode,但得到了完全相同的结果。

对不起,如果这个问题听起来很愚蠢!

马克

【问题讨论】:

  • 使用endl 刷新流。 cout &lt;&lt; "I'm a C++ program" &lt;&lt; endl;
  • @LuchianGrigore:它应该被自动刷新,通过在程序结束时销毁静态ios_base::Init对象。
  • std::cout won't print 的可能重复项
  • @Marc Freeman 你传递给编译器的选项是什么?
  • @zenith 选项?我已经回到 xCode,我只是按 Product>Perform Action>Compile "File-name.cpp"。有什么我不应该做的事情吗?如果可以的话,我会在最初的问题中添加一个屏幕截图。

标签: c++ macos compilation terminal


【解决方案1】:

我无法在我的机器上重现它,但我猜您需要使用 cout &lt;&lt; endl;cout.flush(); 刷新缓冲区

【讨论】:

    【解决方案2】:

    开始新行时需要声明行尾。

    将您的代码更改为以下内容:

    #include <iostream>
    using namespace std;
    
        int main()
        {
            cout << "Hello World! "<< endl;
            cout << "I'm a C++ program"<<endl;
            return 0;
        }
    

    你的终端应该是这样的(这是在我的机器上):

    【讨论】:

    • OP 在字符串之间没有或不需要换行符,如果您不需要保证在下一个保证的冲洗点之前打印文本,'\n' 就足够了换行符(例如在程序结束)。
    • @chris 你怎么知道 OP 想要什么?如果在任何地方都没有 endl,他可能希望它在 2 行上。这个答案和上一个答案一样有效。
    • 是的,如果他只需要一个新行,他可以使用\n。我应该澄清endl 插入一个换行符并刷新流
    • 我听从了每个人的建议(我非常感谢有多少人来帮助我)但现在它甚至没有打开终端。我试过使用'std::endl;'和“std::cout”以及“endl”和“cout.flush”。似乎没有任何效果。
    • @MarcFreeman 尝试在return 0; 之前添加system("pause");。我刚刚在我的机器上运行了代码,一切都很好。
    猜你喜欢
    • 2020-11-10
    • 2023-01-19
    • 2020-09-27
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多