我有一個相當大的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