2009-10-13 10 views
6

Je lis dans un fichier binaire via la syntaxe habituelle C++/STL/iostream. Je suis en train de copier tout le contenu dans un tableau char dynamiquement alloué et cela fonctionne très bien jusqu'à présent.memorystream - stringstream, string, autres?

mais étant donné que je veux servir une partie du contenu sous forme de lignes à une autre partie du programme, je pense que ce serait mieux/plus facile de coller à des flux parce que je ne veux pas pirater autour avec des fonctions cstring et pointeurs.

ma question est maintenant, comment puis-je stocker la lecture en mémoire. dans une stringstream? ou dans une chaîne? qui convient le mieux? Y a-t-il des avantages ou des inconvénients de l'un par rapport à l'autre?

merci d'avance!

+0

ok, la copie est facile après avoir lu ce http://stackoverflow.com/questions/132358/how-to-rile-file-content-into-istringstream cela (si c'est vrai) indique également que les chaînes internes buffer est une chaîne (d'où le nom que je suppose). comment puis-je réserver des octets pour ce tampon - je n'ai vu aucune note sur cela dans le ctor ou quoi que ce soit sur une fonction de réserve ... – didito

Répondre

4

Si vous voulez lire comme un flux, vous pourriez aussi bien lire directement à partir du fichier à l'stringstream:

std::stringstream data; 
data << input_file.rdbuf(); 

qui lit le contenu de « fichier_entrée » dans « données ». Vous pouvez lire les données à partir de là comme vous le feriez pour n'importe quel autre flux.

+0

merci, déjà eu ça. la question est maintenant est-il sage de stocker un stringstream comme une sorte de tampon de mémoire/char dans ma classe? ou devrais-je utiliser une chaîne? – didito

+0

et qu'en est-il de std :: stringbuf? – didito

+0

En l'absence d'une raison spécifique de faire autrement, je stockerais simplement la chaîne de caractères. –