C ++

Administrere konsollen med iostream Classes i C ++

Administrere konsollen med iostream Classes i C ++

I databehandling er konsollen datamaskintastaturet og dataskjermen. Tidligere ble utdataene sendt direkte til skjermbildet og ikke til et vindu som ble vist på skjermen. For den vanlige databrukeren bruker ikke applikasjoner i dag skjermen eksplisitt. Disse programmene bruker vinduer som vises på skjermen. Datamaskinprogrammeren trenger imidlertid fortsatt å bruke skjermbildet. Selv om programmereren fortsatt trenger å bruke skjermen, tillater ikke operativsystemet ham å gjøre det. Operativsystemet gir et vindu som simulerer skjermbildet. I Windows-operativsystemet kalles dette vinduet kommandoprompt. I Linux-operativsystemet og dets varianter kalles dette vinduet terminalen.

Det forventes at leseren allerede vet hvordan man bruker ledeteksten eller terminalen. Denne artikkelen forklarer hvordan du leser tegn og strenger fra tastaturet og sender tegn og strenger til terminalen (eller ledeteksten). Hver C ++ programmerer trenger å vite i denne artikkelen.

For å få input fra tastaturet og output til terminalen, må programmet begynne med:

#inkludere
bruker navneområde std;

Artikkelinnhold

  • Smale strømobjekter av standard iostream
  • Skaffe tegn og strenger fra tastaturet
  • Vise og slette tegn før du trykker på Enter
  • Sende tegn og strenger til skjermen
  • Argumenter for et C ++ - program
  • Konklusjon

Smale strømobjekter av standard iostream

Iostream-klassen, standardobjektene, cout, cin, cerr og tette, har blitt instantiert og allerede i standardbiblioteket. Programmereren bruker dem bare uten å instantiere dem igjen.

cout

Følgende uttalelse i hovedfunksjonen () sender teksten, "Dette sendes ut.”Til terminalen:

cout << "This is output.";

cout er et output iostream-objekt i standardbiblioteket, som allerede er instantiert. << is the insertion operator, which sent the bytes, “This is output.” to the output stream object, cout. When the statement is executed, the text appears on the screen.

Med ovenstående uttalelse vises den gjengitte ledeteksten til høyre for utgangssetningen. Det går ikke til neste linje. “Endl” på slutten av følgende uttalelse vil tvinge det som skrives ut på skjermen til neste linje:

cout << "This is output." << endl;

“Endl” er en forhåndsdefinert variabel. Skjerminnhold kan også tvinges til neste linje med:

cout << "This is output." << '\n';

Ved bruk av '\ n', kan det hende at alle tekstlinjene fremdeles ikke vises på skjermen umiddelbart. “Endl” skyller hele tekstlinjen til skjermen.

Merk: en streng sendt til cout er med doble anførselstegn, mens et tegn som sendes er i enkle anførselstegn. En serie strenger og tegn kan sendes i en uttalelse, hver foran seg << . All that will appear in one line at the output if '\n' is not in the series.

cin

cin er standard iostream inngangsobjekt, allerede instantiert, og tilgjengelig i standardbiblioteket. Vurder følgende kodesegment i hovedfunksjonen ():

char txt [50];
cout << "Enter a word and press Enter:" <> tekst;
cout << txt << endl;

Den første uttalelsen erklærer et tomt utvalg på 50 tegn. Den andre setningen instruerer brukeren om å skrive inn et ord på neste skjermlinje og trykke Enter. Legg merke til bruken av "endl" som tvinger brukeren til å skrive inn tekst i neste linje på skjermen. Når brukeren skriver inn tekst, blir den skrevne teksten ekko til skjermen mens den går inn i cin-objektet. Etter å ha trykket Enter, blir den tredje setningen i kodesegmentet utført. Denne tredje setningen sender den skrevne teksten til variabelen, txt. Teksten som er angitt, skal i dette tilfellet ikke være lengre enn 50 tegn. Legg merke til bruken av utvinningsoperatøren, >>. Den siste setningen viser den skrevne teksten på skjermen.

cin kan ta mer enn ett ord fra tastaturet, atskilt med mellomrom. Disse ordene må hentes ut i forskjellige variabler. Følgende kodesegment illustrerer dette:

char txt [20];
int det;
flyte ft;
cout << "Enter 3 values and press Enter:" <> txt >> it >> ft;
cout << txt << " << it << " << ft << endl;

Legg merke til uttalelsen:

cin >> txt >> it >> ft;

Det første ordet blir ekstrahert til txt, det neste ved det og det siste til ft. Hvis innspillet var,

en 25 3.6

da ville utdata fra kodesegmentet være,

en 25 3.6

cerr

Følgende program har en feil:

#inkludere
bruker navneområde std;
int main ()

i minInt;
retur 0;

Den første setningen i hovedsak () er ikke riktig. Hvis navnet på filen med koden er “temp.cc "og den resulterende kjørbare filen skal kalles" temp ", så vil følgende g ++ kommando sende kompilatorfeilmeldingen til filen," error.tekst":

g ++ -o temp temp.cc 2> feil.tekst

Hvis filen “feil.txt ”eksisterer ikke, det vil bli opprettet. Legg merke til delen “2> feil.txt ”av g ++ -kommandoen.

Skjermen er standard destinasjon for utdata, og det er også standard feilmål. Hvis “2> feil.txt ”er utelatt fra g ++ kommandoen, så vil kompilatorfeilmeldingen bli sendt til standard feildestinasjon, som fremdeles er skjermen (monitor).

Strømobjektet som representerer standard utgangsdestinasjon er cout. Strømobjektet som representerer standard feildestinasjon er cerr. En programkjøringsfeil kan sendes til skjermen som følger:

cerr << "The error message!" << '\n';

tette

En applikasjon tar forskjellige innganger til forskjellige tidspunkter. Alle inngangene kan vises på skjermen igjen. Alle inngangene kan lagres i en fil. Dette er logging. Standard loggmål er skjermen. Standard loggstrømobjekt er tett. Følgende kode vil vise inngangsteksten til skjermen på nytt:

char txt [50];
cout<<"Enter text and press Enter:"<>tekst;
tette<Hvis inngangsteksten er "input_text", vil tilstopping vise "input_text" på skjermen igjen.

I praksis blir logging vanligvis omdirigert til en fil. Følgende program illustrerer dette:

#inkludere
bruker navneområde std;
int main ()

freopen ("logg.txt "," w ", stdout);
cout << "input_text" << endl;

Legg merke til bruken av funksjonen, freopen () og dens argumenter. Det første argumentet er navnet på loggfilen. Hvis filen ikke eksisterer, vil den bli opprettet. Det andre argumentet er "w" for "skriv". Det tredje argumentet er stdout for standard-output. Den andre setningen i hovedfunksjonen () bruker cout for å sende loggteksten til filen. Merk: Den faktiske inndatakoden har ikke blitt vist i dette programmet.

Skaffe tegn og strenger fra tastaturet

Mens brukeren skriver inndata, blir tegnene sendt til inngangsstrømbufferen og vises på skjermen. Når brukeren trykker på Enter-tasten, er alle tegnene i bufferen. markøren går også til begynnelsen av neste linje under, på skjermen. Programmet fortsetter deretter til neste programuttalelse, etter uttalelsen om inngangslesing.

Cin-objektet har metoder som denne delen er opptatt av.

Lesing av første karakter

få (char_type & c):
Følgende kodesegment viser hvordan du leser det første tegnet fra inngangsstrømbufferen:

char ch;
cout << "Input text:" << endl;
cin.få (ch);
cout << ch << endl;

Den første uttalelsen erklærer et tegn uten oppgave. Den andre uttalelsen forteller brukeren å legge inn et tegn. Når brukeren skriver inn tegn og trykker på Enter-tasten, kopierer tredje setning tegnet fra inngangsstrømbufferen til variabelen, ch.

Selv om brukeren skrev inn mer enn ett tegn, ville det første tegnet bli tatt av kodesegmentet.

få():
get () uten argument, returnerer desimal ASCII-kode. Vurder følgende kodesegment:

cout << "Input text:" << endl;
cout << cin.get() << endl;

Hvis inngangen er "asdfg", vil 97 returneres, som er desimal ASCII-kode for 'a'.

få (char_type * s, streamsize n)

Etter at brukeren har lagt inn en setning og trykker på Enter-tasten, kan et antall tegn som begynner på den første, hentes fra cin-strømbufferen. Følgende kode kan brukes:

char str [10];
cout << "Input text:" << endl;
cin.få (str, 10);
cout << str << endl;

Hvis inndata er "flotte mennesker", vil utgangen være "flott peo", med 9 tegn og ikke 10. Strengen NUL-tegnet (\ 0) tar den tiende posisjonen i get-argumentet. For å ha 9 tegn i str må lagringsstørrelsen være minst 10, og argumentet get () må være 11. Hvis hele inndatelinjen er ønsket, må strenglagringsnummeret være minst antall tegn som er skrevet, pluss 1. Så hvis 12 tegn er skrevet for hele linjen, bør tallet være 13 for streng (str) lagringsstørrelse og 13 for get () -argumentet. Merk at ett mellomrom telles som ett tegn.

få (char_type * s, streamsize n, char_type delim)
Det er mulig å trekke ut en understreng, avgrenset til høyre, ved første forekomst av et bestemt tegn, eller ved delstrengens strømstørrelse, som noensinne kommer først. Hvis inndatateksten til følgende kode er "flotte mennesker", vil "flott" bli hentet ut:

char str [30];
cout << "Input text:" << endl;
cin.få (str, 6, 'o');
cout << str << endl;

Den sjette posisjonen fra begynnelsen er romkarakteren, og den avgrenser utelukkende det ekstraherte underlaget. Den sjette posisjonen kommer først før den eneste karakteren, 'o'. Merk at lagringsstørrelsen for str kan være så høy som mulig.

Hvis inngangsteksten til følgende kode er "flotte mennesker", vil "gr" bli hentet ut:

char str [30];
cout << "Input text:" << endl;
cin.få (str, 10, 'e');
cout << str << endl;

Den første forekomsten av 'e' kommer først før den tiende posisjonen.

Få alle tegnene på en linje

Etter å ha trykket på Enter-tasten, kan alle tegnene som er skrevet inn på linjen fås som vist i følgende kode:

cout << "Input text:" << endl;
mens (1)
char ch = (char) cin.få();
cout << ch;
hvis (ch == '\ n')
gå i stykker;

Casting med (char), konverterer hvert desimaltall til det tilsvarende ASCII-tegnet.

kikke ()

Get () medlemsfunksjonene leser ikke bare neste tegn; de fjerner den fra strømbufferen. Imidlertid leser peek () medlemsfunksjonen det neste tegnet (begynner fra det første) uten å fjerne det fra bufferen. I den følgende koden blir hvert tegn først lest med peek () -funksjonen før den blir fjernet, av get () -funksjonen. Alt som skjer etter at brukeren trykker på Enter-tasten:

cout << "Input text:" << endl;
mens (1)
char ch = (char) cin.kikke ();
cout << ch;
cin.få();
hvis (ch == '\ n')
gå i stykker;

Hvis de neste tegnene ikke ble fjernet av get (), vil titt () bare lese det første tegnet, og sløyfen vil gjenta på ubestemt tid.

Vise og slette tegn før du trykker på Enter

Legg merke til at med cin-objektet, må Enter-tasten trykkes før det blir handling. Det er mulig at tegn vises mens du blir skrevet og slettet før du trykker på Enter-tasten. Imidlertid betyr det grensesnitt med operativsystemet. Operativsystemene er forskjellige. Så dette betyr forskjellig koding for forskjellige operativsystemer. Så dette emnet fortjener en helt annen opplæring - se senere.

Sende tegn og strenger til skjermen

Cout-objektet er et output stream-objekt, allerede instantiert og til stede i C ++ standardbiblioteket. cout er hovedobjektet som brukes til å sende tegn og strenger til skjermen. Dette gjøres med innsettingsoperatøren, << . With the cin object, the text is obtained line-by-line. With the cout object, the text is added onto the same line until '\n' or endl is encountered.

Uttrykk som resulterer i skalar kan være argumenter for innsettingsoperatøren. Operatøren konverterer skalar til tekst og plasserer teksten i cout-objektstrømmen. Når tekst sendes til cout-objektet, vises den normalt på skjermen (monitor). Imidlertid kan det hende at det ikke vises umiddelbart. For å presse tekst inn på skjermen, sett inn spesialverdien "endl" like etter at du har satt inn teksten. Dette vil føre til at teksten skylles til skjermen, og en ny linje blir lagt til. Merk: '\ n' legger ganske enkelt til en ny linje, men skyller ikke tekst til skjermen.

Følgende program viser hvordan du skriver ut verdiene til int, float og vanlig tekst på skjermen:

#inkludere
bruker navneområde std;
int main ()

int it = 5;
flyte ft = 63.5;
cout << "The " << it << " items cost $" << ft << " US." << endl;
retur 0;

Utgangen er:

De 5 varene koster $ 63.5 USA.

Følgende program viser hvordan strengen til et objekt som er instantiert fra en klasse skrives ut:

#inkludere
bruker navneområde std;
struct St
char str [11] = "noen ord";
obj;
int main ()

cout << obj.str << '\n';
retur 0;

Resultatet er "noen ord".

Argumenter for et C ++ - program

Programutførelse begynner fra hovedfunksjonen (). Hovedfunksjonen () har faktisk to valgfrie parametere. Syntaksen til hovedfunksjonen () med de valgfrie parametrene er:

int main (int argc, char * argv [argc])

retur 0;

Anta at navnet på den kjørbare C ++ - filen er "temp". Anta at argumentene som programmet trenger fra omgivelsene (operativsystemet), skrevet av brukeren, er,

artikler 3 bok penn "stort hus"

Det er 5 argumenter her: "artikler", "3", "bok", "penn" og "stort hus"

Hver er tekst. Et nummerert argument til et program er tekst. Med andre ord er hvert argument en streng. "Stort hus" er i anførselstegn fordi det er et uttrykk. Terminalkommandoen for å kjøre dette programmet vil være:

./ midlertidige artikler 3-bokspenn "stort hus"

Forutsatt at filtemperaturen er i hjemmekatalogen. Merk at mellomrom og ikke komma skiller argumentene.

Nå, i hovedsyntaksens () syntaks, er argc antall argumenter for programmet, pluss 1. I dette tilfellet er det 5 argumenter for programmet. Så argc er 6. I syntaksen er argv [argc] en rekke pekere til strenger. Den første verdien for denne matrisen ved argv [0] er gitt av kompilatoren. Det er en peker til navnet på programfilen. Resten av verdiene er en pekepinn til programargumentene i brukerens rekkefølge som er skrevet inn. Størrelsen på denne matrisen er argc. I dette tilfellet er størrelsen 1 + 5 = 6.

Anta at følgende program heter temp:

#inkludere
bruker navneområde std;
int main (int argc, char ** argv)

cout << argv[0] << ", " << argv[1] << ", " << argv[2] << ", " << argv[3] << ", " << argv[4] << ", " << argv[5] << endl;
retur 0;

Merk deg her at matrisen "char * argv [argc]", er deklarert som "char ** argv".

Hvis dette programmet kjøres med terminalkommandoen,

./ midlertidige artikler 3-bokspenn "stort hus"

da ville utgangen være:

./ temp, artikler, 3, bok, penn, stort hus

Merk at katalogbanen har blitt inkludert med navnet på den kjørbare filen.

Vær også oppmerksom på at verdien for argc ikke er sendt i løpet av programmet (anrop til programmet).

Konklusjon

Iostream-klassen har fire viktige objekter som er cout, cin, cerr og clog. cin er et inngangsobjekt, mens resten er utgangsobjekter. Mens et program kjører, er input til programmet annerledes enn når programmet skal starte. Når et program begynner å kjøre, blir input til programmet koblet til kommandoen for å kjøre programmet, atskilt med mellomrom.

Mus Hvordan reversere rulle retning for mus og styreplater i Windows 10
Hvordan reversere rulle retning for mus og styreplater i Windows 10
Mus og Pekeplates gjør ikke bare databehandling enkelt, men mer effektivt og mindre tidkrevende. Vi kan ikke forestille oss et liv uten disse enhetene...
Mus Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Musepekeren og markøren i Windows 10 er veldig viktige aspekter ved operativsystemet. Dette kan sies også for andre operativsystemer, så i sannhet er ...
Gratis og åpen kildekode-spillmotorer for utvikling av Linux-spill
Denne artikkelen vil dekke en liste over gratis og open source-spillmotorer som kan brukes til å utvikle 2D- og 3D-spill på Linux. Det er mange slike ...