我有一个从中得到的字符串ostringstream
。我目前正在尝试替换此字符串 ( content.replace(content.begin(), content.end(), "\n", "");
) 中的一些字符,但有时会出现异常:
malloc: *** mach_vm_map(size=4294955008) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
std::bad_alloc
我怀疑发生这种情况是因为字符串太大。这些情况的最佳做法是什么?在堆上声明字符串?
更新
我的完整方法:
xml_node HTMLDocument::content() const {
xml_node html = this->doc.first_child();
xml_node body = html.child("body");
xml_node section = body.child("section");
std::ostringstream oss;
if (section.type() != xml_node_type::node_null) {
section.print(oss);
} else {
body.print(oss);
}
string content;
content = oss.str();
content.replace(content.begin(), content.end(), "<section />", "<section></section>");
content.replace(content.begin(), content.end(), "\t", "");
xml_node node;
return node;
}