2011-05-18 86 views
-2

如何为ostringstream对象追加数据? Assumingly:设置ostringstream自动追加

ostringstream oss; 
oss << '0x11'; 

如何设置执行自动从最后已知的元素oss << 0x22?我通读了我需要设置一些标志,但我该怎么做?

编辑:对这个问题非常含糊不清。那些咖啡正在磨损。从我上面的问题扩展:

ostringstream oss(osstringstream::app)它设置为每次追加?我的目标是创建一个字符串。

+11

我不明白。流总是附加。你想达到什么目的? – 2011-05-18 11:24:25

+0

它与C-tag有什么关系? – cpx 2011-05-18 11:31:23

+2

将标签更改为“ostringstream”与c无关c – mkaes 2011-05-18 11:33:19

回答

1

当传递给 ostringstream构造函数时,没有指定app标志的作用。此标志仅与 ofstream有关。另一方面,ostringstream流, 并且因此,如果在此期间没有发现搜索,则在先前的插入数据之后总是插入数据。毕竟,这是输出流的定义。

-1

这就是ateapp之间的区别作为开放模式。 ate位置在打开后的末尾,然后单独离开写入位置(所以如果你需要它,你可以在任何地方写入),app确保所有的写入都在流结束时完成。

编辑:实际上,stringstream的行为不同,所以不要依赖它。

+0

除'ate'和'ape'只与'filebuf'和'[oi] fstream'有关外。它们是'open'的参数,并且没有'stringbuf'的定义。 (形式上,我认为传递它们将是未定义的行为,因为标准没有为它们指定语义。) – 2011-05-18 12:48:01

+0

@詹姆斯,你有参考吗?这是我的,但没有发现任何说明,吃和猿只与filebuf有关。它们被用于open()的描述中,以便为fopen提供等价的参数,但是它们在ios_base中的描述不需要针对字符串流进行扩展,而不再是对seekdir或iostate的描述。 – AProgrammer 2011-05-18 13:02:13

+0

它们的完整语义在'filebuf'中描述; 'stringbuf'只描述'in'和'out'的效果。但是你可能有一个观点:'openmode'描述中的表格确实总结了一个语义。但是,如果这适用,'trunc'对'streambuf'意味着什么?或'二进制'?我认为这个问题对我来说是足够开放的,可以提交一份DR。 – 2011-05-18 13:18:03

0

当您在第一个示例中创建stringstream时,它将默认附加。