2012-12-10 66 views
6

可能重複:
What is the best way to slurp a file into a std::string in c++?最短的方式來閱讀文本文件轉換爲字符串

我以爲會有已有這樣的問題,但我找不到一個。所以這裏是我的問題。

將整個文本文件讀入字符串的最短途徑是什麼?我只想使用最新的C++標準和標準庫的功能。

我認爲這個共同的任務必須有一個班輪!

+1

http://stackoverflow.com/a/4761779/942596這個鏈接給出了一個不錯的方法。用字符串替換向量,它仍然有效。 – andre

回答

7

這大概:

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>()); 
1

要讀取一個文件到使用一個語句std::string(是否適合一行取決於你行的長度......)看起來是這樣的:

std::string value{ 
    std::istreambuf_iterator<char>(
     std::ifstream("file.txt").rdbuf()), 
    std::istreambuf_iterator<char>()}; 

的方法是很遺憾通常不會像使用額外的std::ostringstream那樣快(雖然它應該更快......)。

相關問題