Mit csinál a cin.getline a C ++ nyelven?


Legjobb válasz

A cin.getline () lehetővé teszi egy olyan karakterlánc megadását, amely div> is van szóköz. Szintaxisa a következő: cin.getline (a karakterlánc neve, a karakterlánc mérete); Tekintsük a következő példát: Tegyük fel, hogy belépek a Hello World-be str és strr esetén is. #include névtér standard használatával;

int main()

{

char str[100]", strr[100];

cout<<"Enter the strings : ";

cin.getline( str, 100 ); //enter Hello World

cin>>strr; //enter Hello Word.

cout<

cout<

return 0;

}

Ez az alapvető különbség. A cin nem veszi figyelembe a karaktersorozatban található fehér mezőket, míg a cin.getline figyelembe veszi.

Válasz

Ez az egyik leggyakoribb probléma, amellyel a hallgatók általában szembesülnek a getline () használata közben. funkció.

A program futtatásakor írja be a Delhi parancsot, majd nyomja meg az Enter billentyűt. Ez az enter kulcs nem más, mint az újsor karakter. A fehér szóköz karaktereket, például a tabulátorterületet és a "\ n", általában figyelmen kívül hagyják (kihagyják), amikor az értéket cin használatával adják meg.

Általában extra karakterek maradnak a bemeneti adatfolyamban a bemenet után. állítólag elkészült. Ezután átkerülnek a következő beviteli műveletre, annak ellenére, hogy nem erre szánják őket. Gyakran ez egy újsoros karakter, amely mögött marad, de néha más karakterek is megmaradnak.

A programodban ez az újsoros karakter bemenetként szolgál a getline () függvényhez. Mivel ez a függvény megadta a bemenetét, nem teszi lehetővé az érték megadását. Meg kell szabadulnia ettől a karaktertől, és akkor a programja teljesen jól fog működni.

Ezen idegen karakterektől való megszabaduláshoz a Az istream osztály ignore (MAX, DELIM) tagfüggvényét használják. MAX karaktereket olvas le és dob el, beleértve a megadott elválasztó karaktert. Használja ezt a függvényt, mielőtt meghívná a getline () függvényt:

cin.ignore (1, "\ n");

Mivel az extra karakterek is tartalmazhatnak szóközt (például a Delhi begépelése után helyet tesz egy kis szóközzel, majd megnyomja az Enter billentyűt), 1 helyett biztonságosabb lenne használni a 10.

cin.ignore (10, "\ n");

Ne aggódjon a istream osztály miatt. Ez az IOSTREAM fejlécfájljában van deklarálva. , a getline () maga az istream osztály tagfüggvénye is.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük