【发布时间】:2013-04-05 21:41:15
【问题描述】:
我正在从 ifstream 中读取随机 ascii 的文本文件。我需要能够将整个消息放入字符串类型以进行字符解析。我目前的解决方案有效,但我认为我正在通过使用等效的方法来谋杀更冗长的文件的处理时间:
std::string result;
for (std::string line; std::getline(std::cin, line); )
{
result += line;
}
我担心与这样的连接字符串相关的开销(这种情况发生了几千次,消息长达数千个字符)。我过去几天一直在浏览不同的潜在解决方案,但没有什么是非常合适的......我不知道提前消息的长度,所以我不认为使用动态大小的字符数组是我的答案.
我通读了this SO thread,这听起来几乎适用,但仍然让我不确定;
有什么建议吗?
【问题讨论】:
-
这是一个真正的问题吗?
-
您可以使用streambuf iterators一次性构造字符串。
-
@mfontanini:不,他只是为了好玩而突然编造出来的。没有什么比他的时间更好的事了,就像你和我一样。
-
ifstream表示一个文件,一个文件表示你可以stat,你可以stat表示你知道它的大小;我错过了什么吗?
-
好的,所以如果他不知道大小并且不想连接,为什么不简单地逐行解析呢?恕我直言,连接并不是一个有效的问题。
标签: c++ string optimization file-io