Lire chaîne ligne par ligne [Résolu]

Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
- - Dernière réponse : 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.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
90
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 206 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
90
0
Merci
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
Commenter la réponse de cptpingu
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
0
Merci
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)'
Commenter la réponse de cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
0
Merci
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.
Commenter la réponse de cs_mervat