2012-12-10 11 views
6

Eventuali duplicati:
What is the best way to slurp a file into a std::string in c++?via più breve per leggere Textfile a String

Ho pensato ci sarebbe una domanda come questa già, ma non riuscivo a trovarne uno. Quindi ecco la mia domanda.

Qual è il modo più breve per leggere un intero file di testo in una stringa? Voglio solo utilizzare le funzionalità delle più recenti librerie standard e standard C++.

Penso che ci debba essere un solo rivestimento per questo compito comune!

+1

http://stackoverflow.com/a/4761779/942596 questo link fornisce un buon metodo. sostituisci il vettore con una stringa e funziona ancora. – andre

risposta

7

Probabilmente questo:

std::ifstream fin("filename"); 
std::ostringstream oss; 
oss << fin.rdbuf(); 
std::string file_contents = oss.str(); 

C'è anche questo:

std::istreambuf_iterator<char> begin(fin), end; 
std::string file_contents(begin, end); 

Qualcuno potrebbe suggerire questo, ma io preferisco scrivere istreambuf_iterator<char> solo una volta.

std::string file_contents(std::istreambuf_iterator<char>{fin}, std::istreambuf_iterator<char>()); 
1

di leggere un file in un std::string utilizzando uno economico (se si rientra in una riga dipende dalla lunghezza di voi linee ...) assomiglia a questo:

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

L'approccio è, purtroppo, spesso non è veloce come usare un extra std::ostringstream (anche se dovrebbe essere davvero più veloce ...).

Problemi correlati