【问题标题】:c++ issues using cout and cin on same line (xcode8)在同一行上使用 cout 和 cin 的 c++ 问题(xcode8)
【发布时间】:2017-03-30 04:03:21
【问题描述】:

在 C++ 中使用 Xcode 我正在尝试创建一个简单的控制台应用程序。然而,我对 cout 和 cin 的使用似乎并没有按我的预期工作。

我期待:

Testing: 12
input was 12

编辑:我已经尽可能地减少了代码测试:

#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

这里有什么我遗漏的吗?

【问题讨论】:

  • 虽然很高兴您提供了示例代码,但请注意它是可编译的,特别是当您在运行时遇到问题时。请花时间阅读此页面以提供minimal reproducible example
  • 道歉。我明白为什么其他人无法编译。然而,我的问题只是我试图强调的 cout 和 cin 区域。希望有人可以在那里看到问题
  • 修复编译器错误后,我无法重现您观察到的行为。您使用的是什么编译器、编译器版本和编译器标志?通常,对std::cin 的任何调用都应该刷新std::cout,但这里似乎没有发生。尝试在每个std::cout 之后添加&lt;&lt; std::flush。如果这解决了您的问题,对我来说它看起来像是一个库实现错误。虽然也许,在修复编译错误的过程中,我做了一个改变来避免你描述的问题。
  • 我建议将您的代码减少到重现问题所需的最小数量。这可能意味着只需使用局部变量执行一堆 cin 和 cout 语句。不需要 GameCharacter 类或与您的问题无关的任何其他函数。
  • @FrançoisAndrieux 我只是使用 xcode 8 中的内置工具。没有什么定制或特殊的。事实上,我确信几天前它工作得很好,但我什么也没改变

标签: c++ xcode xcode8 cin cout


【解决方案1】:

显然是specific problem with C++ streams, in Xcode debugger, Debug build.

试试这个:
1. 项目 -> 编辑活动目标 ...
2. 在Build
中搜索“预处理器” 3. 删除值:
预处理宏 = _GLIBCXX_DEBUG=1 _GLIBCXX_DEBUG_PEDANTIC=1

我发现了一个类似的问题,但Xcode 3.2.1 and C++ string fails!

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

#define _GLIBCXX_FULLY_DYNAMIC_STRING 1
#undef _GLIBCXX_DEBUG
#undef _GLIBCXX_DEBUG_PEDANTIC

【讨论】:

  • @AdamJarvis 您使用的是哪个版本的 GCC?
  • 您的解决方法似乎对我没有任何改变。 GCC 是 Xcode 附带的任何东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
相关资源
最近更新 更多