2010-04-13 28 views
1

我敢肯定,我只是在這裏做一些愚蠢的事情,但我無法弄清楚它是什麼。當我嘗試運行此代碼:istringstream在C++

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

using namespace std; 

int main(int argc, char *argv[]) 
{ 
string s("hello"); 

istringstream input(s, istringstream::in); 

string s2; 
input >> s2; 

cout << s; 
} 

我得到這個錯誤:

malloc: *** error for object 0x100016200: pointer being freed was not allocated 
*** set a breakpoint in malloc_error_break to debug 

我能想到的唯一的事情就是我在棧中分配S2,但我想串管理自己堆上的內容。任何幫助在這裏將不勝感激。

感謝,

helixed

編輯:固定的主力,其中cout << s應該已經cout << s2的最後一行。它運行沒有錯誤,如果我初始化s2到「嗨」,但不是其他。這只是一個奇怪的gcc編譯問題?

+6

這對我來說看起來很好,並且在我的機器上成功運行。這是你使用的確切輸入文件?什麼OS /編譯器? – 2010-04-13 20:53:51

+0

那它不是一個輸入文件。我試圖使用一個字符串作爲輸入。 – LandonSchropp 2010-04-13 21:45:56

+0

哦,對不起,我正在使用Mac OS X 10.6.3(10D573)和Xcode中的默認編譯器(我認爲它是gcc,但我不確定)。 – LandonSchropp 2010-04-13 21:49:05

回答

1

適合我。

但我從來沒有做過這樣的:

istringstream input(s, istringstream::in); 

嘗試

istringstream input(s); 
+3

'''ios_base :: in'是'which'參數的默認值,所以它應該沒關係 – 2010-04-13 20:57:17

+0

沒有解決問題。 – LandonSchropp 2010-04-13 22:08:27

+0

@ helixed:那你爲什麼接受這個答案,如果它沒有解決你的問題? – jalf 2010-04-18 12:17:48

2

因此,答案竟然是在Xcode中的錯誤。 Here's一個類似的問題及其解決方案。