Ainsi istringstream
copie le contenu d'une chaîne, lorsque initialisés par exemple non-copie istringstream
string moo("one two three four");
istringstream iss(moo.c_str());
Je me demandais s'il y a un moyen de faire std::istringstream
utiliser la donnée c_str
comme tampon sans copier les choses. De cette façon, il n'aura pas à copier de gros morceaux de mémoire avant de passer le std::istringstream&
aux fonctions qui prennent istream&
comme argument. Ce que j'ai essayé de faire est de convertir certaines fonctions qui prennent seulement std::ifstream&
arguments (ils sont principalement des parseurs) en prenant istream&
ainsi. Devrais-je créer ma propre sous-classe istream
pour cela?
Voir [cette réponse] (http: // stackoverflow.com/questions/2786816/how-to-create-c-istringstream-from-a-char-array-with-null0-characters/2786872 # 2786872) pour un moyen de le faire (fondamentalement identique à la solution @ Charles, mais l'emballage un 'istream' autour de lui pour plus de commodité). –