要将数据从ostringstream写入ofstream,我必须编写如下内容:
std::ostringstream ss;
myFile<<ss.str();另一方面,如果我使用stringstream,我可以直接访问缓冲区:
std::stringstream ss;
myFile<<ss.rdbuf();问题是ostringstream::str()复制了字符串,这有点糟糕,因为在我的程序中有非常大的字符串,所以stringstream应该更好,因为我可以直接访问缓冲区进行读取。这里的人说,如果我们只处理输出操作,那么我们应该使用ostringstream而不是stringstream。我不能简单地使用字符串,因为我正在插入各种类型的数据。有人能给我一个如何处理这件事的建议吗?
发布于 2015-07-15 09:46:22
这里的人说,如果我们只处理输出操作的话,就应该在字符串流上使用字符串流。
使用更具体的ostringstream的主要原因是明确您的意图并避免错误。在这种情况下,需要stringstream来防止复制潜在的大字符串,所以只需使用它(小心)。
发布于 2015-07-15 10:00:45
ostringstream适用于数据进入流并且永远不会出来的情况。(当然,除了您实际需要的std::string对象之外。)
stringstream的目的是用于同时进行读写的地方。<< rdbuf()是从流中读取数据的一种方式,所以stringstream是完全合适的。
https://stackoverflow.com/questions/31426392
复制相似问题