【问题标题】:C++ not showing cout in Xcode console but runs perfectly in TerminalC++ 未在 Xcode 控制台中显示 cout 但在终端中完美运行
【发布时间】:2017-04-01 15:46:06
【问题描述】:

基本上我在Xcode Version 8.3 (8E162) 运行一个简单的程序

#include <iostream>
using namespace std;
int main() {
    int a;   
    cout << "What is your age: ";
    cin >> a;
    cout << "My age is " << a << endl;
    return 0;
}

我已经看到关于cout 的不同问题需要刷新,所有std::cout won't printXcode debugger not showing C++ cout output。 Xcode 调试器不会打印cout,直到我输入\n or endl。但是,它在终端上运行良好。

如果我必须使用What is your age: 并且用户在一行中输入年龄而不是在下一行输入\n and endl 怎么办?

这是 Xcode 调试器在构建和运行后显示的内容

这是用户输入并显示结果的时候

这是在终端上,这正是我需要 Xcode 调试器上的输出。

【问题讨论】:

  • 考虑到它适用于终端但不适用于 xcode,我会先查看设置中的 xcode 编译器和链接器选项......也许你会在那里找到一些有趣的东西。
  • 一个新问题stackoverflow.com/questions/43160533/…似乎也有同样的问题。

标签: c++ xcode debugging cout


【解决方案1】:

您自己已经解决了您的问题:std::cout 使用缓冲输出并且应该始终被刷新。您可以通过使用std::cout &lt;&lt; "What is your age? &lt;&lt; std::flush、使用std::cout.flush() 或添加像std::endl 这样隐式刷新的换行符来实现此目的。

一个完整的解决方案可能如下所示:

#include <iostream>

using namespace std;

int main() {
    int a;   
    cout << "What is your age: " << flush;
    cin >> a;
    cout << "My age is " << a << endl;
    return 0;
}

【讨论】:

  • 仍然不打印,what is your age,首先它等待用户输入并给出类似这样的结果 20 你的年龄是多少我的年龄是 20
  • 当你添加像\nstd::endl这样的换行符时它是否有效?
  • 是的,它有效,但我确实想打印 what is your age 并在同一行而不是下一行向用户询问输入。
  • 嗯,到目前为止我发现的所有资源都表明 XCode 不会输出,直到该行被换行符终止。一个非常奇怪的行为!抱歉,我没有其他解决方案。
【解决方案2】:

通过进行一些研究,Xcode Version 8.3 Build 8E162 上的cin and cout 流上似乎存在错误,Mar 27, 2017 发布。 降级到 Xcode Version 8.2.1 就像一个魅力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2018-08-18
    • 2022-10-05
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多