Mi a cin.ignore () és mi haszna van?


Legjobb válasz

Itt többet törölhet a Cin használatával

A , cin.get , cin.getline és cin. figyelmen kívül hagyja

A >> operátor használata (cinnel)

A> > operátor akkor használható, ha egyszerűen be akarja olvasni a felhasználó által beírt következő nem üres karaktereket egy karakterbe vagy karaktertömbbe. Az első szóközt követő nyomtatható karaktereket a rendszer figyelmen kívül hagyja és nem tárolja a változó. használjon például:

cin >> UserExplanation;

ha például szeretné hogy egy teljes mondatot kapjon a felhasználótól, amely szóközöket is tartalmaz. Ebben az esetben jobban szolgálná, ha a cin tagfunkciókat get vagy getline használja. .

Kérdés : A null-terminátor automatikusan tárolódik a karaktertömb, a UserExplanation végén?

A cin.get használata

A formázatlan tagtag függvény úgy működik, mint a >> operátor két kivétellel. Először is, a get függvény szóköz karaktereket tartalmaz , míg az extraktor kizárja a fehér helyet, ha az ios :: skipws jelző be van állítva (alapértelmezett). Másodszor, a get függvény kevésbé valószínű, hogy a megkötött kimeneti adatfolyamot (például cout) kiöblíti.

A get függvény egyik változata megad egy puffer címet és az olvasandó karakterek maximális számát. Ez hasznos egy adott változóra küldött karakterek számának korlátozásához, amint ez a példa bemutatja:

#include

void main()

{

char line[25];

cout << " Type a line terminated by carriage return\n>";

cin.get( line, 25 );

cout << " " << line;

}

Ebben a példában legfeljebb 24 karaktert és egy befejező karaktert írhat be. A fennmaradó karaktereket később lehet kinyerni.

A cin.getline használata

A getline tag függvény hasonló a get függvény. Mindkét függvény lehetővé teszi egy harmadik argumentumot, amely meghatározza a bemenet befejező karakterét. Az alapértelmezett érték az újsor karakter. Mindkét függvény fenntart egy karaktert a szükséges befejező karakterhez . Azonban a get elhagyja a befejező karaktert az adatfolyamban, a getline pedig eltávolítja a befejező karaktert.

A következő példa egy befejező karaktert határoz meg a bemenethez adatfolyam:

#include

void main()

{

char line[100];

cout << " Type a line terminated by "t"" << endl;

cin.getline( line, 100, "t" );

cout << line;

}

A cin.ignore használata

cin.ignore (int nCount = 1, int delim = EOF); ​​

Paraméterek

nCount - A kibontandó karakterek maximális száma. elválasztás - Az elválasztó karakter (alapértelmezés szerint EOF).

Megjegyzések

Akár nCount karaktereket is kivon és elvet. A kibontás leáll, ha a határoló elválasztása kivonásra kerül, vagy elérte a fájl végét. Ha delim = EOF (alapértelmezett), akkor csak a fájl végének vége okozza a megszüntetést. A határoló karakter kibontásra kerül.

Válasz

A cin.ignore () egy előre definiált függvény, amely figyelmen kívül hagyja / kitörli egy vagy több karaktert a bemeneti pufferből.

Előfeltételek: 1. A cin fehér teret kezel, azaz " ", " \ t ", " \ n " mint elválasztó karakter.

2. Ha bármit olvas a standard beviteli eszközről, itt a billentyűzetről, akkor először a bemeneti pufferbe kerül. A bemeneti puffer olyan hely, amely minden bejövő információt tárol előtte. a feldolgozásig folytatja a CPU-t.

A probléma: 1. Tegyük fel, hogy "karakterláncot" szeretne olvasni a felhasználótól. char nevem [10];

2. Valahogy végül a cin-t használja a cin.getline () cin >> myname;

3 helyett. Beírom az "ABC" szót, majd megnyomom az Enter billentyűt. felveszi az ABC-t, és a következő "\ n" deliméterként kezeli.Ennek eredményeként a "\ n" nem olvasható, és a bemeneti pufferben marad.

4. Tehát itt a cin.ignore () figyelmen kívül hagyja ezeket az olvasatlan karaktereket, amelyek a bemeneti pufferben maradtak.

A megoldás: Ha szeretné kerülje a helyzeteket, ne feledje , hogy ne használja a cin karakterláncokat. és tada, probléma megoldva !!

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