Explication détaillée de l'entrée de chaîne C ++!

Plusieurs méthodes courantes de saisie de chaînes en C ++ sont les suivantes:

cin 、 cin.get () 、 cin.getline () 、 getline () 、 gets () 、 getchar ()

 

1. cin >>

Utilisation 1: utilisation la plus courante et la plus élémentaire, entrez un nombre: 

#include <le iostream>
 l'utilisation de l'  espace de noms STD;
 int main () 
{ 
int A, B, 
CIN >> A >> B, 
COUT << A + B << endl; 
} 
Entrée: 2 [ENTER] 3 [ENTRER ] 
Sortie: 5

 Utilisation 2: Acceptez une chaîne de caractères, et elle se terminera lorsqu'elle rencontrera "espace", "Tab" et "Entrée"

#include <le iostream>
 l'utilisation de l'  espace de noms STD;
 int main () 
{ 
ombles A [ 20 est ]; 
CIN >> A; 
COUT << A << endl; 
} 
Entrée: jkljkljkl 
Sortie: jkljkljkl 
Entrée: jkljkl jkljkl // espace de cas Fin, donc vous ne pouvez pas entrer plusieurs mots 
Sortie: jkljkl

 

2. cin.get ()

Première utilisation: cin.get (nom de variable de caractère) peut être utilisé pour recevoir des caractères

#include <le iostream>
 l'utilisation de l'  espace de noms STD; 
int main () 
{ 
ombles ; CH 
CH . = CIN GET (); // ou cin.get (ch), seulement obtenir un caractère 
COUT CH << << endl; 
} 
Entrée: jljkljkl 
Sortie: j

Utilisation deux: cin.get (nom du tableau de caractères, le nombre de caractères reçus) est utilisé pour recevoir une ligne de chaînes, peut recevoir des espaces

#include <iostream> en
 utilisant l'  espace de noms std;
 int main () 
{ 
char a [ 20 ]; 
cin. get (a, 20 ); // Certains similaires à getline. Vous pouvez saisir plusieurs mots, séparés par des espaces. 
<< << A COUT endl; 
} 
entrée: jkl jkl jkl 
sortie: jkl jkl jkl 
entrée: abcdeabcdeabcdeabcdeabcde (entrée 25 caractères) 
Sortie: abcdeabcdeabcdeabcd (19 caractères recevant une ' \ 0 ' )

Utilisation trois: cin.get (sans paramètres) sans paramètres est principalement utilisé pour éliminer les caractères indésirables dans le flux d'entrée, ou pour supprimer le retour chariot pour compenser les lacunes de cin.get (nom du tableau de caractères, nombre de caractères reçus).

#include <iostream> en
 utilisant l'  espace de noms std; 
 
int main () 
{ 
     
    char arr [ 10 ]; 
    cin. get (arr, 10 ); 
    cin. get (); // utilisé pour manger le retour chariot, équivalent à getchar (); 
    cout << arr << endl; 
    cin. get (arr, 5 ); 
    cout << arr << endl; 
    system ( " pause " );
     return  0 ; 
} 
 
entrée abcdefghi 
sortie abcdefghi 
entrée abcde 
sortie abcd 

 
#include<iostream>
 utilisant l'  espace de noms std; 
 
int main () 
{ 
     
    char arr [ 10 ]; 
    cin. get (arr, 10 );
     // cin.get (); // utilisé pour manger le retour chariot, équivalent à getchar (); Maintenant commentez cette ligne et essayez 
    cout << arr << endl; 
    cin. Get (arr, 5 ); 
    cout << arr << endl; 
    system ( " pause " );
     return  0 ; 
} 
 
input abcdefghi 
output abcdefghi

 

3.cin.getline ()

cin.getline () // accepte une chaîne, peut recevoir des espaces et produire

#include <iostream> en
 utilisant l'  espace de noms std;
 int main () 
{ 
char m [ 20 ]; 
cin.getline (m, 5 ); // essentiellement le même que ci-dessus. 
<< << m COUT endl; 
} 
entrée: jkljkljkl 
sortie: jklj 
caractères de réception à 5 m, où le dernier est ' \ 0 ' , de sorte que quatre voir sortie de caractères; 
si 5 à 20: 
entrée: jkljkljkl 
sortie: jkljkljkl 
entrée: JKLF fjlsjf fjsdklf 
sortie: JKLF fjlsjf fjsdklf 
// extension:
 // cin.getline () a en fait trois paramètres, cin.getline (accepte une chaîne de m, le nombre de réception 5, fin Caractère)
 //Lorsque le troisième paramètre est omis, le système prend par défaut la valeur '\ 0' qui est '/ n'.
// Si vous changez cin.getline () dans l'exemple en cin.getline (m, 5, 'a'); lorsque vous entrez jlkjkljkl, que vous sortez jklj, lorsque vous entrez jkaljkljkl, que vous sortez jk 
lorsqu'il est utilisé dans un tableau multidimensionnel, vous pouvez avec cin.getline (m [I], 20 est ) tel usage: 
#include <iostream le> 
#include < Chaîne >
 l'aide d'  espace de noms STD; 
int main () 
{ 
carbonisation m [ . 3 ] [ 20 est ];
 pour ( int i = 0 ; i < 3 ; i ++ ) 
{ 
cout << " \ nVeuillez saisir le premier " << i + 1 <<" Corde: " << endl; 
cin.getline (m [I], 20 est ); 
} 
COUT << endl;
 pour ( int J = 0 ; j < 3. ; J ++ ) 
COUT << " Output m [ " J << << " ] valeur: " << m [J] << endl; 
} 
S'il vous plaît entrer une chaîne: 
kskr1 
S'il vous plaît entrer la deuxième chaîne: 
kskr2 
S'il vous plaît caractères eNTRER : string 
kskr3 
sortie m [ 0 valeur]: kskr1 
sortie m [ 1.] Valeur: kskr2 
sortie m [ 2 ] valeur: kskr3

 

4. getline ()

getline () // accepte une chaîne, peut recevoir des espaces et des sorties, doit inclure "#include <string>

#include <le iostream> 
#include < Chaîne >
 l'utilisation de l'  espace de noms STD; 
main () 
{ 
chaîne STR, 
getline (CIN, STR), 
COUT << STR << endl; 
} 
Entrée: jkljkljkl // VC6 a un bug, le besoin Entrez deux fois. 
Sortie: jkljkljkl 
entrée: jkl jfksldfj jklsjfl 
sortie: jkl jfksldfj jklsjfl 
et cin.getline () est similaire, mais cin.getline () courant de istream appartient, et getline () appartient flux de chaîne, deux fonctions ne sont pas identiques

 

5. obtient ()

gets () // accepte une chaîne, peut recevoir des espaces et des sorties, doit inclure "#include <string>

#include <le iostream> 
#include < Chaîne >
 l'utilisation de l'  espace de noms STD; 
main () 
{ 
ombles m [ 20 est ], 
l'obtient (m); // ne peut pas être écrit comme obtient = m (); 
COUT m << << endl; 
} 
entrée : jkljkljkl 
sortie: jkljkljkl 
entrée: jkl jkl jkl 
sortie: jkl jkl jkl 
cin.getline similaire () à l' intérieur d'exemple, obtient () peut également être utilisé dans des réseaux multi-dimensionnels qui sont : 
#include <iostream le> 
#include < Chaîne >
 l'utilisation de l'  espace de noms STD; 
principal (int) 
{ 
omblesm [ 3 ] [ 20 ];
for ( int i = 0 ; i < 3 ; i ++ ) 
{ 
cout << " \ n 请 输入 第" << i + 1 << " 个 字符串 :" << endl; 
obtient (m [i]); 
} 
Cout
 << endl;
for ( int j = 0 ; j < 3 ; j ++ ) 
cout << " 输出 m [ " << j << " ] 的 值: "
} 
S'il vous plaît entrer une chaîne de caractères: 
kskr1 
S'il vous plaît entrer la seconde chaîne: 
kskr2 
S'il vous plaît entrer chaîne: 
kskr3 
sortie m [ 0 ]: valeurs kskr1 
sortie m [ 1. La valeur]: kskr2 
sortie m [ 2 valeur]: kskr3 
sensation utilisation gets () et cin.getline () est très similaire, mais cin.getline () remplit un paramètre supplémentaire , Soit 
dit en passant ici, pour cet article L'exemple de kskr1, kskr2, kskr3 est également applicable à cin >>, car il n'y a pas d'espace entré ici, si un espace est entré, tel que "ks kr jkl [retour de chariot]", alors cin aura reçu 3 chaînes , "Ks, kr, jkl"; 
un autre exemple est "kskr 1 [retour chariot] kskr 2 [retour chariot]", puis recevez "kskr, 1 , kskr"; ce n'est pas le résultat que nous voulons! Et cin.getline () et gets () ne produiront pas cette erreur car ils peuvent recevoir des espaces;

 

6. getchar ()

getchar () // Accepte un caractère, doit inclure "#include <string>

#include <le iostream>
 l'utilisation de l'  espace de noms STD;
 int main () 
{ 
ombles ; CH 
CH = getchar (); // , ne peut pas être écrit getchar (CH) 
COUT CH << << endl; 
} 
Entrée: jkljkljkl 
Sortie: J 
/ / getchar () est une fonction du langage C, C ++ est également compatible, mais essayez de ne pas l'utiliser

 

Je suppose que tu aimes

Origine www.cnblogs.com/sqm724/p/12732925.html
conseillé
Classement