在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);

至于为什么写入位置默认为前,我不知道。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top