我有一个相当大的vector<string>
在内存中,我想写每个string
为./log.txt
,这里是我如何做到这一点:格式化的东西进入文件写入有效
ofstream ofs("./log.txt");
for (vector<string>::const_iterator cit = vec.begin(); cit != vec.end(); cit++) {
char buf[30];
sprintf(buf, "%s\[email protected]\n", cit->c_str());
ofs << buf;
}
ofs.close();
我关心的磁盘I/O次,它有效吗?更好的想法是什么?
你在关心磁盘I/O。我关心公然的缓冲区溢出危险。即使这种方法比“ofs << * cit <<”--- @“;''我不会那么做。像往常一样,这种问题的答案是尝试两种方法(理智和疯狂)和时间。 YMMV – jahhaj 2012-07-31 08:28:53
我一直在阅读你对你的答案的评论。你说的是需要格式化,但是你发布的代码没有格式。我想知道,你是否认为sprintf会将字符串截断为30个字符?如果是这样,你错了。试图了解问题在这里。 – jahhaj 2012-07-31 10:11:46