可能重複:
What is the best way to slurp a file into a std::string in c++?最短的方式來閱讀文本文件轉換爲字符串
我以爲會有已有這樣的問題,但我找不到一個。所以這裏是我的問題。
將整個文本文件讀入字符串的最短途徑是什麼?我只想使用最新的C++標準和標準庫的功能。
我認爲這個共同的任務必須有一個班輪!
可能重複:
What is the best way to slurp a file into a std::string in c++?最短的方式來閱讀文本文件轉換爲字符串
我以爲會有已有這樣的問題,但我找不到一個。所以這裏是我的問題。
將整個文本文件讀入字符串的最短途徑是什麼?我只想使用最新的C++標準和標準庫的功能。
我認爲這個共同的任務必須有一個班輪!
這大概:
std::ifstream fin("filename");
std::ostringstream oss;
oss << fin.rdbuf();
std::string file_contents = oss.str();
還有這個:
std::istreambuf_iterator<char> begin(fin), end;
std::string file_contents(begin, end);
也許有人會認爲這一點,但我喜歡敲istreambuf_iterator<char>
只有一次。
std::string file_contents(std::istreambuf_iterator<char>{fin}, std::istreambuf_iterator<char>());
要讀取一個文件到使用一個語句std::string
(是否適合一行取決於你行的長度......)看起來是這樣的:
std::string value{
std::istreambuf_iterator<char>(
std::ifstream("file.txt").rdbuf()),
std::istreambuf_iterator<char>()};
的方法是很遺憾通常不會像使用額外的std::ostringstream
那樣快(雖然它應該更快......)。
http://stackoverflow.com/a/4761779/942596這個鏈接給出了一個不錯的方法。用字符串替換向量,它仍然有效。 – andre