C ++

Konsoles pārvaldība, izmantojot iostream klases C ++

Konsoles pārvaldība, izmantojot iostream klases C ++

Skaitļošanā konsole ir datora tastatūra un datora monitors. Agrāk produkcija tika nosūtīta tieši uz monitora ekrānu, nevis uz monitorā redzamo logu. Parastam datora lietotājam mūsdienās lietojumprogrammas tieši neizmanto monitoru. Šīs lietojumprogrammas izmanto monitorā redzamos logus. Tomēr datorprogrammētājam joprojām ir jāizmanto monitora ekrāns. Lai gan programmētājam joprojām ir jāizmanto monitora ekrāns, operētājsistēma viņam to neļauj darīt. Operētājsistēma nodrošina logu, kas simulē monitora ekrānu. Windows operētājsistēmā šo logu sauc par komandu uzvedni. Linux operētājsistēmā un tās variantos šo logu sauc par termināli.

Paredzams, ka lasītājs jau zina, kā izmantot komandu uzvedni vai termināli. Šajā rakstā ir paskaidrots, kā lasīt rakstzīmes un virknes no tastatūras un nosūtīt rakstzīmes un virknes uz termināli (vai komandu uzvedni). Šajā rakstā jāzina katram C ++ programmētājam.

Lai ievadītu ievadi no tastatūras un izvades uz termināli, programmai jāsāk ar:

# iekļaut
izmantojot nosaukumvietu std;

Raksta saturs

  • Šauras straumes objekti no standarta iostream
  • Rakstzīmju un virkņu iegūšana no tastatūras
  • Rakstzīmju parādīšana un dzēšana pirms Enter nospiešanas
  • Rakstzīmju un virkņu sūtīšana uz monitoru
  • Argumenti C ++ programmai
  • Secinājums

Šauras straumes objekti no standarta iostream

Iostream klase, standarta objekti, cout, cin, cerr un clog, ir instantiated un jau atrodas standarta bibliotēkā. Programmētājs tos vienkārši izmanto, neatkārtojot tos vēlreiz.

cout

Šis funkcijas Main () paziņojums nosūta tekstu: “Tas tiek izvadīts.”Uz termināli:

cout << "This is output.";

cout ir izejas iostream objekts standarta bibliotēkā, kas jau ir instantiated. << 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.

Izmantojot iepriekš minēto paziņojumu, izvades frāzes labajā pusē parādās atkārtoti parādītā komandu uzvedne. Tas neiet uz nākamo rindu. “Endl” šī paziņojuma beigās piespiedīs visu, ko ekrāns drukā, uz nākamo rindu:

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

“Endl” ir iepriekš definēts mainīgais. Ekrāna saturu var piespiest arī nākamajā rindā, izmantojot:

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

Izmantojot '\ n', visas teksta rindas joprojām var neparādīties ekrānā uzreiz. “Endl” izskalo visu teksta rindiņu uz ekrāna.

Piezīme: virkne, kas nosūtīta uz cout, ir divos pēdiņās, bet rakstzīme, kas nosūtīta vienā pēdiņās. Virknes virknes un rakstzīmes var nosūtīt vienā paziņojumā, pirms katra no tiem << . All that will appear in one line at the output if '\n' is not in the series.

cin

cin ir iostream standarta ievades objekts, kas jau ir instantiated un pieejams standarta bibliotēkā. Apsveriet šādu koda segmentu galvenajā () funkcijā:

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

Pirmajā paziņojumā tiek deklarēts tukšs 50 rakstzīmju masīvs. Otrais paziņojums liek lietotājam ierakstīt vārdu nākamajā ekrāna rindā un nospiest taustiņu Enter. Ievērojiet "endl" lietošanu, kas liek lietotājam ekrāna nākamajā rindā ievadīt tekstu. Lietotājam ierakstot tekstu, ievadītais teksts tiek atbalsots ekrānā, kamēr tas nonāk cin objektā. Pēc Enter nospiešanas tiek izpildīts trešais priekšraksts kodu segmentā. Šis trešais paziņojums ievadīto tekstu nosūta mainīgajam txt. Ievadītais teksts šajā gadījumā nedrīkst būt garāks par 50 rakstzīmēm. Ievērojiet ekstrakcijas operatora >> lietošanu. Pēdējā paziņojumā ekrānā tiek parādīts ievadītais teksts.

cin var aizņemt vairāk nekā vienu vārdu no tastatūras, atdalot tos ar atstarpēm. Šie vārdi būs jāizvelk dažādos mainīgajos. To ilustrē šāds koda segments:

char txt [20];
int to;
pludiņa pēdas;
cout << "Enter 3 values and press Enter:" <> txt >> it >> pēdas;
cout << txt << " << it << " << ft << endl;

Ievērojiet paziņojumu:

cin >> txt >> it >> pēdas;

Pirmais vārds tiek izvilkts līdz txt, nākamais - līdz pēdējam. Ja ievade bija,

viens 25 3.6

tad koda segmenta izvade būtu,

viens 25 3.6

cerr

Šai programmai ir kļūda:

# iekļaut
izmantojot nosaukumvietu std;
int main ()

in myInt;
atgriešanās 0;

Pirmais apgalvojums galvenajā daļā () nav pareizs. Ja faila ar kodu nosaukums ir “temp.cc ”un iegūto izpildāmo failu sauc par“ temp ”, tad šāda g ++ komanda nosūtīs kompilatora kļūdas ziņojumu uz failu“ error.txt ”:

g ++ -o temp temp.cc 2> kļūda.txt

Ja failā “kļūda.txt ”neeksistē, tas tiktu izveidots. Ievērojiet kļūdas daļu “2>.txt ”komandai g ++.

Ekrāns ir standarta izvades galamērķis, un tas ir arī standarta kļūdas galamērķis. Ja kļūda “2>.txt ”netiek izlaista komandā g ++, tad kompilatora kļūdas ziņojums tiks nosūtīts uz standarta kļūdas galamērķi, kas joprojām ir ekrāns (monitors).

Straumes objekts, kas attēlo standarta izvades galamērķi, ir cout. Straumes objekts, kas apzīmē standarta kļūdas galamērķi, ir cerr. Programmas izpildlaika kļūdu var nosūtīt uz ekrānu šādi:

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

aizsprostot

Lietojumprogramma dažādos laikos izmanto dažādas ievades. Visas ieejas var atkārtoti parādīt ekrānā. Visas ievades var saglabāt failā. Tā ir mežizstrāde. Standarta mežizstrādes galamērķis ir ekrāns. Standarta mežizstrādes straumes objekts ir aizsērējums. Šis kods atkārtoti parādīs ievadīto tekstu ekrānā:

char txt [50];
cout<<"Enter text and press Enter:"<>txt;
aizsprostot<Ja ievades teksts ir "input_text", tad aizsērējums ekrānā atkal parādīs "input_text".

Praksē reģistrēšana parasti tiek novirzīta uz failu. To ilustrē šāda programma:

# iekļaut
izmantojot nosaukumvietu std;
int main ()

freopen ("žurnāls.txt "," w ", stdout);
cout << "input_text" << endl;

Ievērojiet funkcijas freopen () izmantošanu un tās argumentus. Pirmais arguments ir žurnāla faila nosaukums. Ja fails neeksistē, tas tiks izveidots. Tās otrais arguments ir "w" par "rakstīt". Tās trešais arguments ir standarta produkcijas standarts. Funkcijas main () otrais paziņojums izmanto cout, lai reģistrēšanas tekstu nosūtītu uz failu. Piezīme. Faktiskais ievades kods šajā programmā nav parādīts.

Rakstzīmju un virkņu iegūšana no tastatūras

Kamēr lietotājs raksta ievadi, rakstzīmes tiek nosūtītas uz ievades straumes buferi un tiek parādītas ekrānā. Kad lietotājs nospiež taustiņu Enter, visas rakstzīmes atrodas buferī; arī kursors pāriet uz nākamās rindas sākumu zem ekrāna. Pēc tam programma turpina nākamo programmas pārskatu pēc ievades lasīšanas paziņojuma.

Cin objektam ir metodes, ar kurām šī sadaļa attiecas.

Pirmās rakstzīmes lasīšana

get (char_type & c):
Šis koda segments parāda, kā lasīt pirmo rakstzīmi no ievades straumes bufera:

char ch;
cout << "Input text:" << endl;
cin.saņemt (ch);
cout << ch << endl;

Pirmais paziņojums deklarē rakstzīmi bez piešķiršanas. Otrais paziņojums liek lietotājam ievadīt rakstzīmi. Kad lietotājs ievada rakstzīmi un nospiež taustiņu Enter, trešais priekšraksts kopē rakstzīmi no ievades straumes bufera mainīgajā, ch.

Pat ja lietotājs ierakstīs vairāk nekā vienu rakstzīmi, pirmo rakstzīmi uzņems koda segments.

gūt():
get () bez argumenta, atgriež decimālo ASCII kodu. Apsveriet šādu koda segmentu:

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

Ja ievade ir "asdfg", tad tiks atgriezts 97, kas ir decimālais ASCII kods vietnei "a".

iegūt (char_type * s, straumēt n)

Pēc tam, kad lietotājs ir ievadījis frāzi un nospiež taustiņu Enter, no cin plūsmas bufera var izgūt vairākas rakstzīmes, sākot no pirmās. Var izmantot šādu kodu:

char str [10];
cout << "Input text:" << endl;
cin.dabūt (str, 10);
cout << str << endl;

Ja ievade ir "lieliski cilvēki", tad iznākums būs "lielisks peo" ar 9 rakstzīmēm, nevis 10 rakstzīmēm. Virknes NUL raksturs (\ 0) ieņem desmito pozīciju get argumentā. Tātad, lai virknē būtu 9 rakstzīmes, tās krātuves lielumam jābūt vismaz 10, bet get () argumentam jābūt 11. Ja ir nepieciešama visa ievades rinda, virknes krātuves numuram jābūt vismaz ievadīto rakstzīmju skaitam plus 1. Tātad, ja visai rindai ir ierakstītas 12 rakstzīmes, virknes (str) krātuves lielumam jābūt 13 un argumentam get () 13. Ņemiet vērā, ka viena atstarpe tiek skaitīta kā viena rakstzīme.

get (char_type * s, streamsize n, char_type delim)
Ir iespējams izdalīt apakšzīmi, kas norobežota pa labi, pirmo reizi parādoties noteiktai rakstzīmei, vai ar apakšvirsmas straumes lielumu, kas vienmēr ir pirmais. Ja ievades teksts šim kodam ir “lieliski cilvēki”, tiks izvilkts “lielisks”:

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

Sestā pozīcija no sākuma ir atstarpes raksturs, un tā norobežo tikai izvilkto apakšvirkni. Sestā pozīcija ir pirmā pirms vienīgā burta “o”. Ņemiet vērā, ka str atmiņas lielums var būt pēc iespējas lielāks.

Ja ievades teksts šim kodam ir “lieliski cilvēki”, tiks izvilkts “gr”:

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

Pirmais “e” gadījums ir pirmais pirms desmitās pozīcijas.

Iegūt visas līnijas rakstzīmes

Pēc taustiņa Enter nospiešanas visas rindā ierakstītās rakstzīmes var iegūt, kā parādīts šādā kodā:

cout << "Input text:" << endl;
kamēr (1)
char ch = (char) cin.gūt();
cout << ch;
ja (ch == '\ n')
pārtraukums;

Apraide ar (char) pārveido katru decimāldaļu skaitli attiecīgajā ASCII rakstzīmē.

palūrēt ()

Dalībnieka get () funkcijas ne tikai nolasa nākamo rakstzīmi; viņi to noņem no straumes bufera. Tomēr peek () locekļa funkcija simple nolasa nākamo rakstzīmi (sākot no pirmās), nenoņemot to no bufera. Šajā kodā katra rakstzīme vispirms tiek nolasīta ar funkciju peek (), pirms tiek noņemta, izmantojot funkciju get (). Viss, kas notiek pēc tam, kad lietotājs nospiež taustiņu Enter:

cout << "Input text:" << endl;
kamēr (1)
char ch = (char) cin.palūrēt ();
cout << ch;
cin.gūt();
ja (ch == '\ n')
pārtraukums;

Ja nākamās rakstzīmes netika noņemtas ar get (), peek () lasīs tikai pirmo rakstzīmi, un cilpa atkārtosies bezgalīgi.

Rakstzīmju parādīšana un dzēšana pirms Enter nospiešanas

Ievērojiet, ka ar cin objektu pirms darbības ir jānospiež taustiņš Enter. Pirms taustiņa Enter nospiešanas ir iespējams rakstzīmes parādīt, kamēr tās tiek rakstītas un izdzēstas. Tomēr tas nozīmē saskarni ar operētājsistēmu. Operētājsistēmas atšķiras. Tātad tas nozīmē atšķirīgu kodēšanu dažādām operētājsistēmām. Tāpēc šī tēma ir pelnījusi pilnīgi atšķirīgu apmācību - skatiet vēlāk.

Rakstzīmju un virkņu sūtīšana uz monitoru

Cout objekts ir izvades straumes objekts, kas jau ir izveidots un atrodas C ++ standarta bibliotēkā. cout ir galvenais objekts, ko izmanto rakstzīmju un virkņu sūtīšanai uz monitoru. Tas tiek darīts ar ievietošanas operatoru, << . 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.

Izteiksmes, kuru rezultātā rodas skalāri, var būt argumenti ievietošanas operatoram. Operators pārveido skalāru tekstā un ievieto tekstu cout objekta straumē. Kad teksts tiek nosūtīts uz objektu cout, tas parasti parādās ekrānā (monitorā). Tomēr reizēm tas var neparādīties uzreiz. Lai tekstu piespiedu ekrānā, ievietojiet īpašo vērtību “endl” tūlīt pēc teksta ievietošanas. Tas izraisīs teksta izskalošanu ekrānā un tiks pievienota jauna līnija. Piezīme: '\ n' vienkārši pievieno jaunu rindiņu, bet nepazemina tekstu ekrānā.

Šī programma parāda, kā ekrānā drukāt int, float un parasta teksta vērtības:

# iekļaut
izmantojot nosaukumvietu std;
int main ()

int tas = 5;
pludiņa pēdas = 63.5;
cout << "The " << it << " items cost $" << ft << " US." << endl;
atgriešanās 0;

Rezultāts ir:

5 preces maksāja 63 USD.5 ASV.

Šī programma parāda, kā tiek drukāta objekta virkne, kas izveidota no klases:

# iekļaut
izmantojot nosaukumvietu std;
struct St
char str [11] = "daži vārdi";
obj;
int main ()

cout << obj.str << '\n';
atgriešanās 0;

Rezultāts ir "daži vārdi".

Argumenti C ++ programmai

Programmas izpilde sākas no galvenās () funkcijas. Main () funkcijai faktiski ir divi izvēles parametri. Funkcijas Main () sintakse ar izvēles parametriem ir:

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

atgriešanās 0;

Pieņemsim, ka izpildāmā C ++ faila nosaukums ir “temp”. Pieņemsim, ka argumenti, kas programmai nepieciešami no tās vides (operētājsistēmas), kurus ir ievadījis lietotājs, ir,

raksti 3 grāmatu pildspalva "lielā māja"

Šeit ir 5 argumenti: “raksti”, “3”, “grāmata”, “pildspalva” un “liela māja”

Katrs ir teksts. Numerēts programmas arguments ir teksts. Citiem vārdiem sakot, katrs arguments ir virkne. “Lielā māja” ir pēdiņās, jo tā ir frāze. Termināla komanda, lai palaistu šo programmu, būtu:

./ temp raksti 3 grāmatu pildspalva "lielā māja"

Pieņemot, ka faila temp atrodas mājas direktorijā. Ņemiet vērā, ka argumentus atdala atstarpes, nevis komati.

Tagad funkcijas () sintaksē argc ir programmas argumentu skaits plus 1. Šajā gadījumā programmai ir 5 argumenti. Tātad, argc ir 6. Sintaksē argv [argc] ir virkņu norāžu masīvs. Pirmo vērtību šim masīvam pie argv [0] sniedz sastādītājs. Tas ir rādītājs uz programmas faila nosaukumu. Pārējās vērtības norāda uz programmas argumentiem ievadītajā lietotāja secībā. Šī masīva lielums ir argc. Šajā gadījumā izmērs ir 1 + 5 = 6.

Pieņemsim, ka kompilēšanas laikā šādai programmai ir nosaukums temp:

# iekļaut
izmantojot nosaukumvietu std;
int main (int argc, char ** argv)

cout << argv[0] << ", " << argv[1] << ", " << argv[2] << ", " << argv[3] << ", " << argv[4] << ", " << argv[5] << endl;
atgriešanās 0;

Šeit ņemiet vērā, ka masīvs "char * argv [argc]" ir deklarēts kā "char ** argv".

Ja šī programma tiek palaista ar termināla komandu,

./ temp raksti 3 grāmatu pildspalva "lielā māja"

tad izeja būtu:

./ temp, raksti, 3, grāmata, pildspalva, liela māja

Ņemiet vērā, ka direktorija ceļš ir iekļauts izpildāmā faila nosaukumā.

Turklāt ņemiet vērā, ka, darbojoties programmai (izsaucot programmu), argc vērtība nav nosūtīta.

Secinājums

Iostream klasē ir četri svarīgi objekti, kas ir cout, cin, cerr un clog. cin ir ievades objekts, bet pārējie ir izvades objekti. Kamēr programma darbojas, ievadīšana programmā atšķiras no tā, kad programmai jāsāk darboties. Kad programma sāk darboties, ievade programmā tiek apvienota ar komandu, lai palaistu programmu, atdalot ar atstarpēm.

AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...
Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...
Kā nomainīt peles kreiso un labo pogu operētājsistēmā Windows 10
Tas ir diezgan normāli, ka visas datora peles ierīces ir ergonomiski izstrādātas lietotājiem ar labo roku. Bet ir pieejamas peles ierīces, kas ir īpaš...