2010-04-13 2 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

EDIT: Фиксированный последнюю строку основной, где cout << s должен был cout << s2. Он работает без ошибок, если я инициализировал s2 на «привет», но не иначе. Это просто странная проблема компиляции gcc?

+6

Это выглядит хорошо для меня и успешно работает на моей машине. Это точный входной файл, который вы используете? Какой ОС/компилятор? –

+0

Ну, это не входной файл. Я пытаюсь использовать строку в качестве ввода. – LandonSchropp

+0

О, извините, и я использую Mac OS X 10.6.3 (10D573) и компилятор по умолчанию в Xcode (я думаю, что это gcc, но я не уверен). – LandonSchropp

ответ

1

Работы для меня.

Но я никогда не делал этого:

istringstream input(s, istringstream::in); 

Попробуйте

istringstream input(s); 
+3

'ios_base :: in' является значением по умолчанию для аргумента' which', поэтому не имеет значения –

+0

Не исправить проблему. – LandonSchropp

+0

@helixed: Так почему вы согласились с этим ответом, если это не решило вашу проблему? – jalf

2

Таким образом, ответ оказался ошибка в Xcode. Here's Аналогичная проблема и ее решение.

Смежные вопросы