Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

compter le nombre de lignes dans un std::ostringstream

6 réponses
Avatar
MGN
Bonsoir,
la question est dans l'objet.

Sur une std::string, on peut faire par exemple
int lines;
std::count(x.begin(),x.end(),'\n',lines);

Y-a-t-il une méthode simple équivalente ?
Merci à vous

6 réponses

Avatar
Mickaël Wolff
MGN a écrit :
Bonsoir,
la question est dans l'objet.



De quel objet parles-tu ?

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Michael Doubez
On 12 avr, 02:16, Mickaël Wolff wrote:
MGN a écrit :

> la question est dans l'objet.

   De quel objet parles-tu ?



Objet: " compter le nombre de lignes dans un std::ostringstream "

Je suppose que la question est: comment compter le nombre de ligned
dans un ostringstream sans demander la string par str() ?

Je ne suis pas sûr qu'il y ait une solution portable.

--
Michael
Avatar
MGN
Je suppose que la question est: comment compter le nombre de ligned
dans un ostringstream sans demander la string par str() ?


oui, c'est çà.
Je ne suis pas sûr qu'il y ait une solution portable.


Je trouve que les classes de flux forment une véritable usine à gaz.
Si je ne les ai pas utilisées pendant 2 mois, j'ai oublié toutes les
subtilités, syntaxiques et hiérarchiques (un peu comme les locale !)
Et pour la performance, si mon std::ostringstream est gros, je ne suis pas
emballé de passer par une std::string.
Merci à vous quand même.
Avatar
Michael Doubez
On 13 avr, 00:45, "MGN" wrote:
> Je suppose que la question est: comment compter le nombre de ligned
> dans un ostringstream sans demander la string par str() ?
oui, c'est çà.
> Je ne suis pas sûr qu'il y ait une solution portable.

Je trouve que les classes de flux forment une véritable usine à gaz.
Si je ne les ai pas utilisées pendant 2 mois, j'ai oublié toutes les
subtilités, syntaxiques et hiérarchiques (un peu comme les locale !)
Et pour la performance, si mon std::ostringstream est gros, je ne suis pa s
emballé de passer par une std::string.
Merci à vous quand même.



Si tu as le control de la création de la stream, tu peux utiliser une
technique comme le EventGeneratingStream de James Kanze:
http://kanze.james.neuf.fr/doc/en/IO/html/classGabiNS_1_1EventGeneratingOSt ream.html

--
Michael
Avatar
Mickaël Wolff
Michael Doubez a écrit :

Objet: " compter le nombre de lignes dans un std::ostringstream "



C'est marrant, moi j'ai ça dans le champ « Sujet » de mon MUA.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
James Kanze
On Apr 12, 8:40 am, Michael Doubez wrote:
On 12 avr, 02:16, Mickaël Wolff wrote:

> MGN a écrit :

> > la question est dans l'objet.

> De quel objet parles-tu ?

Objet: " compter le nombre de lignes dans un std::ostringstream "

Je suppose que la question est: comment compter le nombre de ligned
dans un ostringstream sans demander la string par str() ?

Je ne suis pas sûr qu'il y ait une solution portable.



La question est, en effet, mal formulée. Pour commencer,
conceptuellement, un ostream est un flux. Il ne contient rien;
on lui a envoyé des données. Ensuite, évidemment, si c'est un
ostringstream, ce qu'on a envoyé se trouve dans le string qu'on
peut en obtenir ; si c'est un ofstream, les données se trouvent
dans un fichier (au moins qu'elles soient affichées sur
l'écran), et ainsi de suite.

Si le but, c'est de pouvoir afficher par la suite des
statistiques sur ce qu'on a fait, un streambuf filtrant
permettrait bien de collectionner les statistiques (et ça,
quelque soit le type de ostream). Mais avant de pouvoir répondre
plus précisement, il faudrait savoir la question.

--
James Kanze