std::basic_istream<CharT,Traits>:: getline
|
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é) :
- une condition de fin de fichier se produit dans la séquence d'entrée.
-
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é. - 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
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) |