Stringstream特性必须复制整个字符串两次?

时间:2016-11-21 15:16:26

标签: c++ string char std stringstream

如果我打开一个文件并读入一个长流,并且我想要它的数据,我发现以下内容不起作用,因为str()的{​​{1}}方法返回临时的副本,一旦返回就会被销毁。所以以下内容不起作用:

std::stringstream

所以我实际上必须有std::stringstream ss; ss << largeFile.rdbuf(); const char* ptr = ss.str().c_str(); // ptr is a dangling pointer 的临时std::string才能复制到ss.str()。这最终(如果我理解正确),字符串类的复制赋值运算符在两个std::string对象之间执行一次深度复制,包括它包含的整个缓冲区。但实际上这种情况发生了两次,因为我发现的临时副本在ss.str().c_str()返回后被破坏也是一对一副本。

我对此感到有点困惑。我不擅长编程,我试图想办法避免复制大缓冲区。感谢。

0 个答案:

没有答案