C ++中的istringstream

时间:2010-04-13 20:50:22

标签: c++ xcode stringstream

我确定我在这里只是做了一些蠢事,但我无法弄清楚它是什么。当我尝试运行此代码时:

#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

编辑:修正了main的最后一行,其中cout << s应该是cout << s2。如果我将s2初始化为“hi”,它运行时没有错误,但不是。这只是一个奇怪的gcc编译问题吗?

2 个答案:

答案 0 :(得分:2)

所以答案结果证明是Xcode中的一个错误。 Here's类似的问题及其解决方案。

答案 1 :(得分:1)

适合我。

但我从未这样做过:

istringstream input(s, istringstream::in); 

尝试

istringstream input(s);