什么是ostringstream的字符串构造的目的是什么?
-
27-09-2019 - |
题
在2005 MSVC,我有以下代码。
std::ostringstream stream("initial string ");
stream << 5;
std::cout << stream.str();
我想到的是:
initial string 5
我得到的是:
5nitial string
用字符串初始化流,我期望流以将其位置移动到初始字符串的末尾。显然,STL不同意我(不是第一次)。
什么是这种行为的目的是什么?这是用例有用的东西?此外,有一种方法来推进流位置到初始字符串的末尾?
解决方案
使用一个ostringstream
和提供初始值就像打开现有的文件进行写入。你有一些数据在那里,除非另行指定,您的初始位置将在数据的开始。您可以在数据查找,也可以指定ios::ate
写指针初始定位对现有数据的末尾,也可以指定ios::app
写指针始终定位到现有的数据结束。
其他提示
可以指定第二构造以设置流光标在端部的参数(可选):
std::ostringstream stream("initial string ", std::ios::ate);
要寻求到结束,这样做:
stream.seekp(0, ios_base::end);
至于为什么写入位置默认为前,我不知道。
不隶属于 StackOverflow