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
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.