以下代码在 clang++-7 上生成“0004567”
#include <iostream>
#include <sstream>
using namespace std;
int main() {
ostringstream oss{"1234567"};
oss << "000";
cout << oss.str() << endl;
}
现在这是正确的 STL 实现吗?
我想不出使用将被覆盖的字符串进行初始化有什么用...
最佳答案
@IgorTandetnik 为您提供了一个解决方案 - 添加 std::ios_base::app
std::ostringstream
构造函数参数。
但是,将初始字符串(并且仅是一个字符串)传递到构造函数中没有任何好处。该参数仍然会被复制,类似于 oss << "1234567";
所做的,但它需要提供一个额外的构造函数参数,这有引入编程错误的风险(在您的代码中也是如此)。
我建议保持简单:
ostringstream oss;
oss << "1234567";
oss << "000";
// alternatively, just do oss << "1234567000";
关于c++ - std::ostringstream 覆盖初始化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62238203/