samedi 16 août 2008

rdbuf

Mieux vaut tard que jamais, après quand même un bon paquet d'années à codouiller en C++, l'on vient enfin de me faire découvrir une bonne manière de balancer un fichier dans une chaîne. Jusqu'ici, je faisais:


std::ifstream str("input.txt");
std::string s;
std::getline(str, s, '\0');

Ça fonctionne à peu près, sauf si le fichier contient un beau nul. Pour le texte, ça va, mais c'est encore un peu long. Entre le rdbuf!

std::string s =
boost::lexical_cast(std::ifstream("input.txt").rdbuf());

Voilà. C'est quand même plus simple, non?

Aucun commentaire: