用于在文件中写入的Stringstream或ostringstream

stringstream or ostringstream for writing in file?

本文关键字:Stringstream ostringstream 文件 用于      更新时间:2023-10-16

要将数据从ostringstream写入ofstream,我必须这样写:

std::ostringstream ss;
myFile<<ss.str();
另一方面,如果我使用stringstream,我可以直接访问缓冲区:
std::stringstream ss;
myFile<<ss.rdbuf();

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

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

使用更具体的ostringstream的主要原因是使您的意图明确,避免错误。在这种情况下,需要stringstream来防止复制可能较大的字符串,因此请小心使用它。

ostringstream用于数据进入流而永远不出来的情况。(当然,您实际需要的std::string对象除外。)

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