【问题标题】:Xcode 8.3 command line C++Xcode 8.3 命令行 C++
【发布时间】:2017-04-06 15:08:03
【问题描述】:

我在 Xcode 8.3 中有一个简单的程序

#include <iostream>
using namespace std;

void reverseString(int);


int main(int argc, const char * argv[]) {

    reverseString(123456);
    return 0;
}

void reverseString(int numString){
    
    if(numString < 10){
        cout<<numString;
    }else{
        cout<<numString % 10;
        reverseString(numString/10);
    }
}

代码只是以相反的顺序打印出一个数字。

当我在 Xcode 中运行程序时,我得到了

程序以退出代码结束:0

用 main 函数中的 print 语句重写程序,如下所示:

int main(int argc, const char * argv[]) {

cout<<"Hello";
reverseString(123456);
    return 0;
}

我得到相同的输出

程序以退出代码结束:0

如果我将 \n 添加到 print 语句的发送 cout&lt;&lt;"Hello\n";

我明白了:

你好

程序以退出代码结束:0

这里发生了什么?我最近更新到 Xcode 8.3,这会导致问题吗?如果是这样,我该如何解决这个问题?

注意:我通过选择文件 -> 新项目 -> MacOS -> 命令行程序来创建我的项目

另请注意:我过去创建的程序仍然可以正常运行。

【问题讨论】:

    标签: c++ xcode


    【解决方案1】:

    在您发送“\n”之前,cout 不会打印任何内容,因此在您的代码中的某个时刻,您需要执行 cout

    【讨论】:

    • 这是有原因的吗?那是特定于Xcode的正确吗?其他 IDE 将在没有 cout 的情况下正确打印语句
    • 我不相信它特定于 Xcode。目的是允许您构建一个字符串以从多行代码输出到标准输出终端,该行仅在以 \n (或 std::endl )终止时才发出
    • 你总是可以调用 cout.flush() 来强制输出,out。
    • 但其他 IDE 可以正确打印该语句,Mac 上的终端也是如此。他们只是以某种方式自己输入吗?
    • 有趣的是,它可以在其他 IDE(编译器等)上运行,但要保证输出,您需要使用行尾终止符,或者刷新输出。
    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2017-09-07
    相关资源
    最近更新 更多