0

要将数据从ostringstreama写入ofstream,我必须编写如下内容:

std::ostringstream ss;
myFile<<ss.str();

另一方面,如果我使用stringstream我可以直接访问缓冲区:

std::stringstream ss;
myFile<<ss.rdbuf();

问题是ostringstream::str()复制字符串有点糟糕,因为在我的程序中有非常大的字符串,所以stringstream应该更好,因为我可以直接访问缓冲区进行读取。这里的人说如果我们只处理输出操作,我们应该使用ostringstreamover 。stringstream我不能简单地使用字符串,因为我要插入各种类型的数据。那么有人可以给我一个关于如何处理这个问题的建议吗?

4

2 回答 2

3

这里的人说,如果我们只处理输出操作,我们应该在 stringstream 上使用 ostringstream

使用更具体的主要原因ostringstream是让您的意图明确并避免错误。在这种情况下stringstream,需要防止复制可能很大的字符串,所以只需使用它(小心)。

于 2015-07-15T09:46:22.547 回答
3

ostringstream适用于数据进入流并且永远不会出现的情况。(当然,std::string您真正想要的对象除外。)

stringstream适用于同时发生读取和写入的用途。<< rdbuf()是一种从流中读取的方式,所以stringstream是完全合适的。

于 2015-07-15T10:00:45.810 回答