【发布时间】:2025-11-30 13:35:01
【问题描述】:
以下代码在clang++-7 上产生“0004567”
#include <iostream>
#include <sstream>
using namespace std;
int main() {
ostringstream oss{"1234567"};
oss << "000";
cout << oss.str() << endl;
}
现在这是正确的 STL 实现吗?
我想不出用将被覆盖的字符串进行初始化有什么用...
【问题讨论】:
-
它就像用
std::ofstream打开一个非空文件一样有用。试试ostringstream oss{"1234567", std::ios_base::app};。或std::ios_base::ate -
字符串流的重点在于它们不是文件。尽管有可用性,但模拟文件行为毫无意义。 ::ate 是这里合理的默认值。
标签: c++ string c++11 stl c++17