2011-03-17 4 views
2

noob question! Comment puis-je lire «un ifstream entier» dans une «chaîne» stdlib? La façon actuelle j'utilise pour tous mes projets maintenant droit gaspille beaucoup de temps, je pense:Quelle est la manière la plus efficace de lire un ifstream dans une chaîne?

string code; 
ifstream input("~/myfile"); 
char c1=input.get(); 
while (c1!=EOF) 
{ 
    code+=c1; 
    len++; 
    c1=input.get(); 
} 

BTW je préfère faire la ligne et la gestion des espaces moi-même.

+1

Voir: http://stackoverflow.com/questions/3303527/how-to-pre-allocate-memory-for-a-stdstring-object/3304059#3304059 –

Répondre

8
string load_file(const string& filename) 
{ 
    ifstream infile(filename.c_str(), ios::binary); 
    istreambuf_iterator<char> begin(infile), end; 
    return string(begin, end); 
} 
+0

Cette utilisation d'itérateurs est plus standard je pense. Je comparerai pour voir comment est plus rapide cependant. – Hossein

2
#include <string> 
#include <iostream> 

int main() { 
    std::string s; 

    std::getline(std::cin, s, '\0'); 
    std::cout << s; 
} 

~

Questions connexes