2009-12-06 65 views
4

我期望以下代碼輸出hello5。相反,它只輸出hello。 這似乎是一個嘗試輸出一個int到ostringstream的問題。 當我直接輸出到cout我收到預期的輸入。在Snow Leopard上使用XCode 3.2。在C++中使用int的ostringstream問題

謝謝!

#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中的主動配置「調試」中的問題產生的。

+1

我使用Microsoft Visual C++ 9.0和Intel C++ Compiler 11.1獲得'hello5'。 – 2009-12-06 02:10:15

+0

http://stackoverflow.com/questions/1416096/c-debug-builds-broke-in-snow-leopard-x-code http://stackoverflow.com/questions/1603300/xcode-3-2-1 -and-c-string-failures – cdespinosa 2009-12-07 05:16:11

+0

這是正確的解決方案。它說將編譯器從GCC 4.2切換到GCC 4.0(在Project Settings,DEBUG配置中)。程序在此之後正確運行。 – 2009-12-07 20:03:55

回答

4

從「調試」到「發佈」的XCode更改活動配置工作作爲一種解決方法。

+2

我只能同意...當在Xcode中測試C++ std ++ 10時。6模板與DEBUG int不輸出。 10.5與DEBUG確實工作正常。我建議你提交一個錯誤報告。 http://bugreport.apple.com – epatel 2009-12-06 02:41:09

+0

它肯定與'-D_GLIBCXX_DEBUG = 1'選項有關。當給我以前的命令行測試時,它現在顯示了同樣的問題。 – epatel 2009-12-06 02:47:12

3

您的代碼是正確的,它會在我的Windows 7機器上寫入hello5。也許問題是,你不寫一個std :: endl或可能會混淆你的操作系統的東西。

+0

不行,但感謝測試 – 2009-12-06 02:12:11

+0

你的問題似乎與你的編譯器或你的shell有關。嘗試附加一個調試器,看看幕後發生了什麼。 – 2009-12-06 02:13:26

+0

那是怎麼做的? – 2009-12-06 02:15:03

1

我剛剛測試過,它在我的Mac上用Xcode 3.2.1和Snow Leopard很好用。這不是說你的提示影響了輸出嗎?嘗試添加一個endl到cout線?

- 編輯 -

我的測試套件

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

我們可以說什麼 這個?總之,64位stdC++的Debug版本似乎被破壞了。

+0

不!嘗試,沒有雪茄,但得到這個:如果我翻轉輸出(詮釋第一,字符串第二),然後沒有什麼出現。 (其實,輸出一個int之後的任何東西都不會顯示出來。 – 2009-12-06 02:11:38

+0

你如何編譯它?我做了一個簡單的'C++ text.cpp' – epatel 2009-12-06 02:12:58

+0

這就是我所擁有的 – 2009-12-06 02:18:49

2

是的,就這樣結束了測試(視窗XP專業版)和它的作品順順當當

+0

您可以在啓用調試的情況下進行測試嗎?即''D_GLIBCXX_DEBUG = 1'就像在unix盒子上一樣?好奇,如果是Mac的唯一問題 – epatel 2009-12-06 02:51:47

+0

我跑過調試器,並沒有看到任何異常...對不起 – Brendan 2009-12-06 04:14:59

+0

我可以想象MS有他們自己的流類的實現。 Mac依靠GLIB資源。不知道它是否被隔離到Mac ... – epatel 2009-12-06 11:24:03