Bedste svar
Her vil du rydde mere med Cin
Brug , cin.get , cin.getline og cin. ignorere
Brug af operatoren >> (med cin)
The> > operator kan bruges, når du blot vil læse de næste tegn, der ikke er blanktegn, indtastet af brugeren i et tegn eller tegnarray. Alle tegn, der kan udskrives, der følger det første mellemrum, ignoreres og lagres ikke i variablen. brug en erklæring som
cin >> UserExplanation;
hvis du f.eks. ønsker det for at få en hel sætning fra brugeren, der inkluderer mellemrum. I så fald ville du være bedre tjent med cin-medlemsfunktionerne get eller getline .
Spørgsmål : Opbevares en null-terminator automatisk i slutningen af tegnarrayet, UserExplanation?
Brug af cin.get
Den uformaterede get-medlemsfunktion fungerer som >> -operatøren med to undtagelser. For det første inkluderer get-funktionen hvide mellemrumstegn , mens ekstraktoren udelukker hvidt mellemrum, når ios :: skipws-flag er indstillet (standard). For det andet er det mindre sandsynligt, at get-funktionen forårsager, at en bundet outputstrøm (f.eks. Cout) skylles.
En variation af get-funktionen angiver en bufferadresse og det maksimale antal tegn, der skal læses. Dette er nyttigt til at begrænse antallet af tegn, der sendes til en bestemt variabel, da dette eksempel viser:
#include
void main()
{
char line[25];
cout << " Type a line terminated by carriage return\n>";
cin.get( line, 25 );
cout << " " << line;
}
I dette eksempel kan du skrive op til 24 tegn og et afsluttende tegn. Eventuelle resterende tegn kan ekstraheres senere.
Brug af cin.getline
Funktionen getline-medlem svarer til få funktion. Begge funktioner tillader et tredje argument, der specificerer afslutningstegnet for input. Standardværdien er den nye linjetegn. Begge funktioner forbeholder sig et tegn til det krævede afsluttende tegn . Men get efterlader det afsluttende tegn i strømmen, og getline fjerner det afsluttende tegn.
Følgende eksempel angiver et afsluttende tegn for input stream:
#include
void main()
{
char line[100];
cout << " Type a line terminated by "t"" << endl;
cin.getline( line, 100, "t" );
cout << line;
}
Brug af cin.ignore
cin.ignore (int nCount = 1, int delim = EOF);
Parametre
nCount - Det maksimale antal tegn, der skal ekstraheres. afgrænsning - Afgrænsningstegnet (er standard til EOF).
Bemærkninger
Uddrag og kasserer op til nCount-tegn. Ekstraktion stopper, hvis skilleafgrænsningen ekstraheres, eller filens afslutning er nået. Hvis afgrænsning = EOF (standard), forårsager kun slutningen af filtilstand opsigelse. Afgrænsningstegnet ekstraheres.
Svar
cin.ignore () er en foruddefineret funktion, der ignorerer / sletter et eller flere tegn fra inputbufferen.
Forudsætninger: 1. cin behandler et hvidt mellemrum, dvs. " ", " \ t ", " \ n " som afgrænsningskarakter.
2. Når du læser noget fra standardinputenheden, tastaturet her, går det først ind i inputbufferen. Inputbufferen er en placering, der indeholder alle indgående oplysninger før den fortsætter til CPUen til behandling.
Problemet: 1. Antag, du vil læse en "streng" fra brugeren. char myname [10];
2. Du ender med at bruge cin i stedet for cin.getline () cin >> myname;
3. Jeg skriver "ABC" og trykker derefter på Enter-tasten. det optager ABC og behandler følgende "\ n" som afgrænsning.Som et resultat læses "\ n" ikke, og den forbliver i inputbufferen.
4. Så her ignorerer cin.ignore () disse ulæste tegn, der er tilbage i inputbufferen.
Løsningen: Hvis du vil undgå situationer, bare husk ikke at bruge cin til at indtaste strenge. og tada, problem løst !!