Lire chaîne ligne par ligne

Résolu
cs_mervat Messages postés 90 Date d'inscription samedi 5 juin 2010 Statut Membre Dernière intervention 6 mars 2015 - 28 déc. 2010 à 15:01
cs_mervat Messages postés 90 Date d'inscription samedi 5 juin 2010 Statut Membre Dernière intervention 6 mars 2015 - 28 déc. 2010 à 16:44
bonjour,
je veux lire une chaîne (std::string) ligne par ligne,
j'ai pas pu le faire avec std::getline car ça marche avec les fichiers (std::ifstream)
pourrais-je convertir un string to stream, si non qu'est ce que je pourrais faire pour lire ma chaîne ligne par ligne.
j'espère avoir votre aide.
merci.

4 réponses

cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
28 déc. 2010 à 16:31
Attention ne confond pas:
- stringstream: Accès en lecture et écriture
- ostringstream: Accès en écriture
- istringstream: Accès en lecture

#include 
#include <sstream>

int main()
{
  const std::string ch = "test\ntoto\ntiti\npouet";
  std::stringstream ss;
  ss << ch;

  std::string line;
  while (std::getline(ss, line, '\n'))
    std::cout << line << std::endl;

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
28 déc. 2010 à 15:52
Tu met ta chaine dans un flux, tout simplement :)
(Tu fais passer ton std::string dans un std::ostringstream). A noter que getline fonctionne avec tous les flux, pas seulement les fichiers.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
cs_mervat Messages postés 90 Date d'inscription samedi 5 juin 2010 Statut Membre Dernière intervention 6 mars 2015
28 déc. 2010 à 16:23
j'ai fais comme ça:
std::string ch;
std::ostringstream ss;
ss << ch.c_str();
while (std::getline(ss,ligne))
.....

j'ai eu l'erreur suivante : Impossible de trouver une correspondance pour 'std::getline<_Elem,_Traits,_Alloc>(std::ostringstream,std::string)'
0
cs_mervat Messages postés 90 Date d'inscription samedi 5 juin 2010 Statut Membre Dernière intervention 6 mars 2015
28 déc. 2010 à 16:44
ah d'accord, j'ai bien compris,
merci de m'avoir aidé et de m'avoir expliqué, et merci aussi pour la rapidité de votre réponse.
0