我广泛使用std::stringstream
来生成代码。在使用operator<<
之后使用str()
函数设置内容时,我遇到了一些查询行为。有人能给我解释一下这种行为吗。我会非常感激的-谢谢。
示例一:
std::stringstream ssa;
ssa.str("Setting string");
std::cout << ssa.str() << std::endl;
ssa << " adding to string";
std::cout << ssa.str() << std::endl;
输出:
设置字符串
添加到字符串
期望值:
设置字符串
设置字符串添加到字符串
因此,在阅读了一些文档之后,我发现应该将打开模式设置为ios_base::ate
std::stringstream ssb(std::ios_base::ate);
ssb.str("Setting string");
std::cout << ssb.str() << std::endl;
ssb << " adding to string";
std::cout << ssb.str() << std::endl;
输出:
设置字符串
设置字符串
再一次(或现在),我希望:
设置字符串
设置字符串添加到字符串
为什么我会得到我想要的结果,我怎样才能得到我想要的结果?E.i.能够设置stringstream
的初始string
和附加到该string
的吗?
我知道我可以只将内容设置为空的string("")
,然后只使用<<operator
。这实际上是我正在使用的变通方法。我只是不理解观察到的行为。这个变通方法让我的代码变得更加凌乱。
https://stackoverflow.com/questions/30899464
复制相似问题