Namespaces
Variants

std::basic_istream<CharT,Traits>:: getline

From cppreference.net
basic_istream & getline ( char_type * s, std:: streamsize count ) ;
(1)
basic_istream & getline ( char_type * s, std:: streamsize count, char_type delim ) ;
(2)

Extrait les caractères du flux jusqu'à la fin de ligne ou le délimiteur spécifié delim .

La première surcharge est équivalente à getline ( s, count, widen ( ' \n ' ) ) .

Se comporte comme une UnformattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, extrait les caractères de * this et les stocke dans des emplacements successifs du tableau dont le premier élément est pointé par s , jusqu'à ce que l'une des conditions suivantes se produise (testées dans l'ordre indiqué) :

  1. une condition de fin de fichier se produit dans la séquence d'entrée.
  2. le prochain caractère disponible c est le délimiteur, tel que déterminé par Traits :: eq ( c, delim ) . Le délimiteur est extrait (contrairement à basic_istream::get() ) et comptabilisé dans gcount() , mais n'est pas stocké.
  3. count est non-positif, ou count - 1 caractères ont été extraits ( setstate ( failbit ) est appelé dans ce cas).

Si la fonction n'extrait aucun caractère, ​ failbit est défini dans l'état d'erreur local avant que setstate() ne soit appelée.

Dans tous les cas, si count > 0 , il stocke alors un caractère nul CharT ( ) dans l'emplacement suivant successif du tableau et met à jour gcount() .

Table des matières

Notes

Parce que la condition #2 est testée avant la condition #3, la ligne d'entrée qui correspond exactement à la taille du tampon ne déclenche pas failbit .

Parce que le caractère de terminaison est compté comme un caractère extrait, une ligne d'entrée vide ne déclenche pas failbit .

Paramètres

s - pointeur vers la chaîne de caractères pour stocker les caractères
count - taille de la chaîne de caractères pointée par s
delim - caractère délimiteur pour arrêter l'extraction. Il est extrait mais non stocké.

Valeur de retour

* this

Exceptions

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Si une opération interne lève une exception, elle est capturée et badbit est défini. Si exceptions() est défini pour badbit , l'exception est relancée.

Exemple

#include <array>
#include <iostream>
#include <sstream>
#include <vector>
int main()
{
    std::istringstream input("abc|def|gh");
    std::vector<std::array<char, 4>> v;
    // note: la boucle suivante se termine lorsque std::ios_base::operator bool()
    // sur le flux retourné par getline() retourne false
    for (std::array<char, 4> a; input.getline(&a[0], 4, '|');)
        v.push_back(a);
    for (auto& a : v)
        std::cout << &a[0] << '\n';
}

Sortie :

abc
def
gh

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applied to Behavior as published Correct behavior
LWG 531 C++98 std::getline ne pouvait pas gérer le
cas où count est non-positif
aucun caractère n'est
extrait dans ce cas

Voir aussi

lire les données d'un flux d'E/S dans une chaîne
(modèle de fonction)
extrait des données formatées
(fonction membre publique)
extrait des caractères
(fonction membre publique)
extrait des blocs de caractères
(fonction membre publique)