getline, fonction de modèle
Extrait des chaînes du flux d'entrée, ligne par ligne.
// (1) delimiter as parameter template<class CharType, class Traits, class Allocator> basic_istream<CharType, Traits>& getline( basic_istream<CharType, Traits>& is, basic_string<CharType, Traits, Allocator>& str, CharType delim); template<class CharType, class Traits, class Allocator> basic_istream<CharType, Traits>& getline( basic_istream<CharType, Traits>&& is, basic_string<CharType, Traits, Allocator>& str, const CharType delim); // (2) default delimiter used template<class CharType, class Traits, class Allocator> basic_istream<CharType, Traits>& getline( basic_istream<CharType, Traits>& is, basic_string<CharType, Traits, Allocator>& str); template<class Allocator, class Traits, class Allocator> basic_istream<Allocator, Traits>& getline( basic_istream<Allocator, Traits>&& is, basic_string<Allocator, Traits, Allocator>& str);
Paramètres
is
Flux d'entrée à partir duquel une chaîne doit être extraite.str
Chaîne dans laquelle les caractères sont lus à partir du flux d'entrée.delim
Délimiteur de ligne.
Valeur de retour
Flux d'entrée is.
Notes
La paire de signatures de fonction marquée (1) extrait des caractères de is jusqu'à ce que delim soit trouvé, en les stockant dans str.
La paire de signatures de fonction marquée (2) utilise le saut de ligne comme délimiteur de ligne par défaut et se comporte en tant que getline(is, str, is.widen('\n')).
La deuxième fonction de chaque paire est analogue à la première pour la prise en charge des références rvalue.
L'extraction s'arrête dans les situations suivantes :
À la fin du fichier. Dans ce cas, l'indicateur d'état interne de is a la valeur ios_base::eofbit.
Une fois que la fonction a extrait un élément dont la valeur est égale à delim. Dans ce cas, l'élément n'est ni remis à sa place, ni ajouté à la séquence contrôlée.
Une fois que la fonction a extrait des éléments str.max_size. Dans ce cas, l'indicateur d'état interne de is a la valeur ios_base::failbit.
En présence de toute autre erreur que celles indiquées précédemment. Dans ce cas, l'indicateur d'état interne de is a la valeur ios_base::badbit.
Pour plus d'informations sur les indicateurs d'état interne, consultez ios_base::iostate.
Si la fonction n'extrait aucun élément, l'indicateur d'état interne de is a la valeur ios_base::failbit. Dans tous les cas, getline retourne is.
Si une exception est levée, is et str sont laissés dans un état valide.
Exemple
Le code suivant illustre getline() dans deux modes : d'abord avec le délimiteur par défaut (nouvelle ligne) et ensuite avec un espace blanc comme délimiteur. Le caractère de fin de fichier (Ctrl-Z sur le clavier) est utilisé pour contrôler la fin des boucles while. Cela permet d'affecter à l'indicateur d'état interne cin la valeur eofbit, qui doit être effacée avec basic_ios::clear() pour que la seconde boucle while fonctionne correctement.
// compile with: /EHsc /W4
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
string str;
vector<string> v1;
cout << "Enter a sentence, press ENTER between sentences. (Ctrl-Z to stop): " << endl;
// Loop until end-of-file (Ctrl-Z) is input, store each sentence in a vector.
// Default delimiter is the newline character.
while (getline(cin, str)) {
v1.push_back(str);
}
cout << "The following input was stored with newline delimiter:" << endl;
for (const auto& p : v1) {
cout << p << endl;
}
cin.clear();
vector<string> v2;
// Now try it with a whitespace delimiter
while (getline(cin, str, ' ')) {
v2.push_back(str);
}
cout << "The following input was stored with whitespace as delimiter:" << endl;
for (const auto& p : v2) {
cout << p << endl;
}
}
Sortie
Configuration requise
En-tête : <string>
Espace de noms : std