std::basic_istream<CharT,Traits>:: get
|
int_type get
(
)
;
|
(1) | |
|
basic_istream
&
get
(
char_type
&
ch
)
;
|
(2) | |
|
basic_istream
&
get
(
char_type
*
s,
std::
streamsize
count
)
;
|
(3) | |
|
basic_istream
&
get
(
char_type
*
s,
std::
streamsize
count, char_type delim
)
;
|
(4) | |
|
basic_istream
&
get
(
basic_streambuf
&
strbuf
)
;
|
(5) | |
|
basic_istream
&
get
(
basic_streambuf
&
strbuf, char_type delim
)
;
|
(6) | |
Extrait un ou plusieurs caractères du flux.
Toutes les versions se comportent comme des UnformattedInputFunction s . Après la construction et la vérification de l'objet sentinelle, ces fonctions effectuent les opérations suivantes :
- count est inférieur à 1 ou count - 1 caractères ont été stockés.
- une condition de fin de fichier se produit dans la séquence d'entrée ( setstate ( eofbit ) est appelée).
-
le prochain caractère d'entrée disponible
c
est égal à
delim
, tel que déterminé par
Traits
::
eq
(
c, delim
)
. Ce caractère n'est pas extrait (contrairement à
getline()).
- une condition de fin de fichier se produit dans la séquence d'entrée.
- l'insertion dans la séquence de sortie échoue (auquel cas le caractère qui n'a pas pu être inséré n'est pas extrait).
- le prochain caractère d'entrée disponible c est égal à delim , tel que déterminé par Traits :: eq ( c, delim ) . Ce caractère n'est pas extrait.
- une exception se produit (auquel cas l'exception est capturée et non relancée).
Si aucun caractère n'a été extrait, appelle setstate ( failbit ) .
Toutes les versions définissent la valeur de gcount() au nombre de caractères extraits.
Table des matières |
Paramètres
| ch | - | référence au caractère dans lequel écrire le résultat |
| 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 n'est pas extrait ni stocké |
| strbuf | - | tampon de flux pour lire le contenu |
Valeur de retour
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 <iostream> #include <sstream> int main() { std::istringstream s1("Hello, world."); char c1 = s1.get(); // lit 'H' std::cout << "after reading " << c1 << ", gcount() == " << s1.gcount() << '\n'; char c2; s1.get(c2); // lit 'e' char str[5]; s1.get(str, 5); // lit "llo," std::cout << "after reading " << str << ", gcount() == " << s1.gcount() << '\n'; std::cout << c1 << c2 << str; s1.get(*std::cout.rdbuf()); // lit le reste, sans inclure '\n' std::cout << "\nAfter the last get(), gcount() == " << s1.gcount() << '\n'; }
Sortie :
after reading H, gcount() == 1 after reading llo,, gcount() == 4 Hello, world. After the last get(), gcount() == 7
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 | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 370 | C++98 |
l'effet de la surcharge
(5)
était
get
(
s, count, widen
(
'
\n
'
)
)
,
qui est l'effet de la surcharge (3) |
corrigé en
get ( strbuf, widen ( ' \n ' ) ) |
| LWG 531 | C++98 |
les surcharges
(3,4)
ne pouvaient pas gérer le
cas où count est non-positif |
aucun caractère n'est
extrait dans ce cas |
Voir aussi
|
extrait des blocs de caractères
(fonction membre publique) |
|
|
extrait des données formatées
(fonction membre publique) |
|
|
extrait des caractères et des tableaux de caractères
(fonction template) |