【问题标题】:ostringstream problem with int in c++c++中int的ostringstream问题
【发布时间】:2009-12-06 02:03:22
【问题描述】:

我希望下面的代码输出hello5。相反,它只输出hello。 尝试将 int 输出到ostringstream 似乎是一个问题。 当我直接向cout 输出相同内容时,我收到了预期的输入。在雪豹上使用 XCode 3.2。

谢谢!

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main(){
 int myint = 5;
 string mystr = "hello";
 string finalstr;
 ostringstream oss;

 oss << mystr << myint;
 finalstr = oss.str();

 cout << finalstr;


 return 0;
}

编辑:请参阅我在下面发布的答案。这似乎是由 Snow Leopard 上 XCode 3.2 中的 Active Configuration 'Debug' 中的问题造成的

【问题讨论】:

标签: c++ xcode string macos


【解决方案1】:

将 XCode 中的活动配置从“调试”更改为“发布”是一种解决方法。

【讨论】:

  • 我只能同意...在使用 DEBUG 在 Xcode c++ std++ 10.6 模板中进行测试时,不会输出 int。带有 DEBUG 的 10.5 确实可以正常工作。我建议你提交一个错误报告。 bugreport.apple.com
  • 这肯定与-D_GLIBCXX_DEBUG=1 选项有关。当给我之前的命令行测试时,它现在显示了同样的问题。
【解决方案2】:

您的代码是正确的,它在我的 Windows 7 机器上写入 hello5。也许问题在于您没有编写 std::endl 或可能会混淆您的操作系统的东西。

【讨论】:

  • 您的问题似乎与您的编译器或外壳有关。尝试附加一个调试器,看看幕后发生了什么。
  • 您可以在启用调试的情况下进行测试吗?即-D_GLIBCXX_DEBUG=1 就像在unix 机器上?好奇是不是只有 Mac 的问题
【解决方案3】:

是的,在这方面进行了测试(windows XP Pro),它运行良好

【讨论】:

  • 您可以在启用调试的情况下进行测试吗?即-D_GLIBCXX_DEBUG=1 就像在unix 机器上?好奇是不是只有 Mac 的问题
  • 我通过调试器运行它并没有发现任何异常...抱歉
  • 我可以想象 MS 有自己的流类实现。 Mac 依赖于 GLIB 源。想知道它是否与 Mac 隔离...
【解决方案4】:

我刚刚测试过,它在装有 Xcode 3.2.1 和 Snow Leopard 的 Mac 上运行良好。不是说您的提示掩盖了输出吗?尝试在 cout 行中添加 endl

-- 编辑--

我的测试套件

  • c++ test.cpp -- 工作正常
  • c++ -D_GLICXX_DEBUG=1 test.cpp -- 失败
  • c++ -arch i386 -D_GLICXX_DEBUG=1 test.cpp -- 工作正常

对此我们能说些什么?总之,64位stdc++的Debug版好像坏了。

【讨论】:

  • 不!试过了,没有雪茄,但得到了这个:如果我翻转输出(首先是int,其次是字符串),那么什么都不会出现。 ( oss
  • 你是怎么编译的?我做了一个简单的c++ text.cpp
猜你喜欢
  • 2011-10-24
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 2016-08-12
相关资源
最近更新 更多