【发布时间】:2015-08-13 10:05:09
【问题描述】:
如果我想在使用之前逐个字符地处理文本文件。什么方法最有效?
我可以这样做:
ifstream ifs("the_file.txt", ios_base::in);
char c;
while (ifs >> noskipws >> c) {
// process c ...
}
ifs.close();
还有这个:
ifstream ifs("the_file.txt", ios_base::in);
stringstream sstr;
sstr << ifs.rdbuf();
string txt = sstr.str();
for (string::iterator iter = txt.begin(); iter != txt.end(); ++iter) {
// process *iter ...
}
最终输出将根据迭代时找到的字符拆分字符串。
哪个更快?或者也许还有另一种更有效的方法?我是否需要为每个字符刷新stringstream(我在某处读到flush 正在影响性能)?
【问题讨论】:
-
我认为您在这里进行了过早的优化。尝试这两种情况,分析和优化。我觉得这取决于编译器的实现,甚至可能取决于操作系统。
-
你应该尝试测量两者。