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