我std::stringstream
广泛使用生成代码。str()
使用函数设置内容并使用时我遇到了一些可笑的行为operator<<
。有人可以向我解释这种行为。我将非常感谢-谢谢。
范例一:
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;
输出:
设定字串
设定字串
再次(或现在),我期望:
设定字串
设置字符串添加到字符串
为什么我得到自己的结果,以及如何得到自己想要的结果?EI能够设置初始string
的stringstream
和附加到string
?
我知道我可以将内容设置为空string("")
,然后仅使用<<operator
。实际上,这是我正在使用的解决方法。我只是不了解所观察到的行为。解决方法使我的代码更加混乱。
您忘记设置标记模式:std::ios_base::out
。这将起作用:
std::stringstream ssb(std::ios_base::out | std::ios_base::ate);
ssb.str("Setting string");
std::cout << ssb.str() << std::endl;
ssb << " adding to string";
std::cout << ssb.str() << std::endl;
输出:
Setting string
Setting string adding to string
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句