Traductions de cette page?:

getline

Syntaxe :

    #include <string>
    istream& std::getline( istream& is, string& s, char delimiter = '\n' );

L'en-tête C++ string définie la fonction globale getline() pour lire les chaînes de caractère depuis un flux d'E/S. La fonction getline(), qui ne fait pas partie de la classe string, lit une ligne depuis is et la met dans s. Si un caractère délimiteur est spécifié, alors getline() utilisera delimiter pour savoir quand arrêter de lire les données.

Par exemple, le code suivant lit une ligne de texte depuis stdin et l'affiche sur stdout :

   string s;
   getline( cin, s );
   cout << "Vous avez entre " << s << endl;

Après avoir mis une ligne de données dans une chaîne de caractère string, vous trouveriez certainement que les fonctions de stringstreams sont très utiles pour extraire les données de cette chaîne. Par exemple, le code suivant lit des nombres depuis l'entrée standard, ignorant toutes lignes “commentée” commençant avec les doubles slash :

    // attends des nombres délimités par des espaces ou des lignes commençant par
    // deux slashes (//)
    string s;
    while( getline(cin,s) ) {
      if( s.size() >= 2 && s[0] == '/' && s[1] == '/' ) {
        cout << "  ignore le commentaire : " << s << endl;
      } else {
        istringstream ss(s);
        double d;
        while( ss >> d ) {
          cout << "  a mis un nombre : " << d << endl;
        }
      }
    }

Quand vous exécutez une interface utilisateur, le code ci-dessus produit cette sortie :

    // test
      ignore le commentaire : // test
    23.3 -1 3.14159
      a mis un nombre : 23.3
      a mis un nombre : -1
      a mis un nombre : 3.14159
    // next batch
      ignore le commentaire : // next batch
    1 2 3 4 5
      a mis un nombre : 1
      a mis un nombre : 2
      a mis un nombre : 3
      a mis un nombre : 4
      a mis un nombre : 5
    50
      a mis un nombre : 50

Comme la fonction getline() commence à lire à la position en cours du fichier, il peut aussi être utilisé pour lire le reste d'une ligne, ou n'importe quel caractère jusqu'au délimiteur spécifié.

Sujets relatif : get, getline, stringstream