我测试了以下两个代码片段,发现代码片段 A 比代码片段 B 更高效。为什么?str()
有复制操作但rdbuf()
没有。str("")
比 贵吗str()
?
代码片段A:
ofstream out("foo.txt");
stringstream ss;
for(int i = 0; i < 300000; i++) {
// append long text to ss
out<<ss.str();
ss.seekp(ios_base::beg);
}
out.close();
代码片段 B:
ofstream out("foo.txt");
stringstream ss;
for(int i = 0; i < 300000; i++) {
// append long text to ss
out<<ss.rdbuf();
ss.str("");
}
out.close();