C++问题:在同一行上使用cout和cin(Xcode8)

4
使用Xcode和c++,我正在尝试创建一个简单的控制台应用程序。但是我的cout和cin的使用似乎不像我打算的那样工作。
我期望:
Testing: 12
input was 12

编辑:我已经尽可能缩小了代码测试:


这段话涉及IT技术,意思是作者已经尽力缩减了代码测试的内容。
#include <iostream>

int main(int argc, const char * argv[]) {
    // insert code here...
    int num;
    std::cout << "Testing: ";
    std::cin >> num;
    std::cout << "input was " << num << std::endl;

    return 0;
}

样例输出:

12
Testing: input was 12
Program ended with exit code: 0

这里有什么我不明白的吗?


2
虽然您提供了示例代码,但请注意确保它是可编译的,特别是如果您在运行时遇到问题。请花时间阅读有关提供 [MCVE] 的页面。 - François Andrieux
1
修复了编译器错误后,我无法重现您观察到的行为。您使用的是哪个编译器、编译器版本和编译器标志?通常,对 std::cin 的任何调用都应该刷新 std::cout,但在这里似乎没有发生。尝试在每个 std::cout 后添加 << std::flush。如果这解决了您的问题,那么在我看来,这似乎是一个库实现 bug。虽然也许,在修复编译错误的过程中,我已经做出了避免您所描述问题的更改。 - François Andrieux
@FrançoisAndrieux 我只是使用 Xcode 8 中内置的工具。没有自定义或特殊的东西。事实上,我确定它在几天前还可以正常工作,但我什么也没改。 - Adam Jarvis
据我所知,Xcode 中没有真正的终端窗口。它提供的任何交互式窗口可能或可能不像终端一样运行。请尝试在真正的终端模拟器中从命令行运行。 - n. m.
1.7 MB 是正常的。C++ 运行时相当大。 - n. m.
显示剩余12条评论
1个回答

1

显然,在Xcode调试器的Debug版本中,存在与C++流有关的特定问题

尝试这个:
1. 项目 -> 编辑活动目标...
2. 在构建中搜索“预处理器”
3. 删除以下值:
Preprocessor Macros = _GLIBCXX_DEBUG=1 _GLIBCXX_DEBUG_PEDANTIC=1

我发现了一个类似的问题,但是是在Xcode 3.2.1和C++字符串失败!时出现的。

您还可以尝试以下解决方法:
将以下行粘贴到程序的开头(在任何#include语句之前):

#define _GLIBCXX_FULLY_DYNAMIC_STRING 1
#undef _GLIBCXX_DEBUG
#undef _GLIBCXX_DEBUG_PEDANTIC

@AdamJarvis 你使用的是哪个版本的GCC? - Rama
你的解决方法似乎对我没有任何改变。GCC是随Xcode一起提供的任何内容。 - Adam Jarvis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接