Hvad er cin.ignore () og hvad er brugen af ​​det?


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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *