C ++

Správa konzoly s triedami iostream v C ++

Správa konzoly s triedami iostream v C ++

Pri výpočtovej technike je konzolou klávesnica počítača a monitor počítača. V minulosti sa výstup odosielal priamo na obrazovku monitora, a nie do okna zobrazeného na monitore. Pre bežných používateľov počítačov dnešné aplikácie nepoužívajú monitor výslovne. Tieto aplikácie používajú okná zobrazené na monitore. Počítačový programátor však musí stále používať obrazovku monitora. Aj keď programátor stále potrebuje používať obrazovku monitora, operačný systém mu to neumožňuje. Operačný systém poskytuje okno, ktoré simuluje obrazovku monitora. V operačnom systéme Windows sa toto okno nazýva Príkazový riadok. V operačnom systéme Linux a jeho variantoch sa toto okno nazýva terminál.

Očakáva sa, že čitateľ už vie, ako používať príkazový riadok alebo terminál. Tento článok vysvetľuje, ako čítať znaky a reťazce z klávesnice a odosielať znaky a reťazce do terminálu (alebo príkazového riadku). V tomto článku musí vedieť každý programátor v jazyku C ++.

Aby sme mali vstup z klávesnice a výstup do terminálu, musí program začínať:

#include
pomocou namespace std;

Obsah článku

  • Objekty úzkeho toku štandardného prúdu
  • Získavanie znakov a reťazcov z klávesnice
  • Zobrazenie a odstránenie znakov pred stlačením klávesu Enter
  • Odosielanie znakov a reťazcov na monitor
  • Argumenty pre program C ++
  • Záver

Objekty úzkeho toku štandardného prúdu

Trieda iostream, štandardné objekty, cout, cin, cerr a clog, boli inštancované a už sú v štandardnej knižnici. Programátor ich jednoducho použije bez ďalšej inštancie.

cout

Nasledujúci príkaz vo funkcii main () odošle text: „Toto je výstup.”K terminálu:

cout << "This is output.";

cout je výstupný iostream objekt v štandardnej knižnici, ktorý je už inštancovaný. << 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.

V prípade vyššie uvedeného príkazu sa znova zobrazuje príkazový riadok vpravo od výstupnej frázy. Nejde to na ďalší riadok. „Endl“ na konci nasledujúceho príkazu vynúti to, čo je vytlačené obrazovkou, na ďalší riadok:

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

„Endl“ je preddefinovaná premenná. Obsah obrazovky možno tiež vynútiť na ďalší riadok pomocou:

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

Pri použití znaku „\ n“ sa všetky riadky textu nemusia okamžite zobraziť na obrazovke. „Endl“ vyprázdni celý riadok textu na obrazovku.

Poznámka: reťazec odoslaný agentovi cout je v úvodzovkách, zatiaľ čo odoslaný znak je v jednoduchých úvodzovkách. Sériu reťazcov a znakov je možné odoslať v jednom príkaze, pred ktorými je každý z nich << . All that will appear in one line at the output if '\n' is not in the series.

cin

cin je štandardný vstupný objekt iostream, ktorý je už inštancovaný a je k dispozícii v štandardnej knižnici. Vo funkcii main () zvážte nasledujúci segment kódu:

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

Prvý príkaz deklaruje prázdne pole s 50 znakmi. Druhý príkaz dáva používateľovi pokyn, aby na nasledujúcom riadku obrazovky napísal slovo a stlačil kláves Enter. Všimnite si použitie „endl“, ktoré núti používateľa zadávať text do ďalšieho riadku obrazovky. Pri zadávaní textu používateľom sa zadaný text odráža na obrazovke, zatiaľ čo vstupuje do objektu cin. Po stlačení klávesu Enter sa vykoná tretí výpis v segmente kódu. Tento tretí príkaz odošle zadaný text do premennej txt. Zadaný text by v tomto prípade nemal mať viac ako 50 znakov. Všimnite si použitie operátora extrakcie >>. Posledný výpis zobrazí zadaný text na obrazovke.

cin môže trvať z klávesnice viac ako jedno slovo oddelených medzerami. Tieto slová budú musieť byť extrahované do rôznych premenných. Ilustruje to nasledujúci segment kódu:

char txt [20];
v tom;
float ft;
cout << "Enter 3 values and press Enter:" <> txt >> to >> ft;
cout << txt << " << it << " << ft << endl;

Všimnite si vyhlásenie:

cin >> txt >> to >> ft;

Prvé slovo sa extrahuje do formátu txt, vedľa neho a posledné do stopy. Ak bol vstup,

jeden 25 3.6

potom by bol výstup segmentu kódu,

jeden 25 3.6

cerr

V nasledujúcom programe sa vyskytla chyba:

#include
pomocou namespace std;
int main ()

v myInt;
návrat 0;

Prvé vyhlásenie v main () nie je správne. Ak je názov súboru s kódom „temp.cc “a výsledný spustiteľný súbor sa bude volať„ temp “, potom nasledujúci príkaz g ++ odošle chybovú správu kompilátora do súboru„ error.TXT":

g ++ -o temp temp.cc 2> chyba.TXT

Ak je v súbore „chyba.txt ”neexistuje, bolo by vytvorené. Všimnite si časť „2> chyba.txt ”príkazu g ++.

Obrazovka je štandardným výstupným cieľom a je tiež štandardným cieľovým miestom chýb. Ak „2> chyba.txt ”je z príkazu g ++ vynechaný, potom sa chybové hlásenie kompilátora odošle na štandardné miesto určenia chyby, čo je stále obrazovka (monitor).

Objekt toku, ktorý predstavuje štandardný výstupný cieľ, je cout. Objekt toku, ktorý predstavuje cieľ štandardnej chyby, je cerr. Programovú chybu je možné zaslať na obrazovku nasledovne:

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

upchať

Aplikácia prijíma rôzne vstupy v rôznych časoch. Všetky vstupy je možné znovu zobraziť na obrazovke. Všetky vstupy je možné uložiť do súboru. Toto je prihlásenie. Štandardným cieľom protokolovania je obrazovka. Štandardným objektom toku protokolovania je upchatie. Nasledujúci kód znovu zobrazí vstupný text na obrazovku:

char txt [50];
cout<<"Enter text and press Enter:"<>TXT;
upchať<Ak je vstupný text „input_text“, potom by upchatie znovu zobrazilo na obrazovke „input_text“.

V praxi sa protokolovanie zvyčajne presmeruje do súboru. Nasledujúci program to ilustruje:

#include
pomocou namespace std;
int main ()

freopen („log.txt "," w ", štandardný výstup);
cout << "input_text" << endl;

Všimnite si použitie funkcie freopen () a jej argumentov. Jeho prvým argumentom je názov súboru protokolu. Ak súbor neexistuje, vytvorí sa. Jeho druhý argument je „w“ pre „write“. Jeho tretím argumentom je štandardný výstup pre štandardný výstup. Druhý príkaz vo funkcii main () používa cout na odoslanie logovacieho textu do súboru. Poznámka: Aktuálny vstupný kód sa v tomto programe nezobrazuje.

Získavanie znakov a reťazcov z klávesnice

Počas zadávania vstupu používateľom sa znaky odosielajú do vyrovnávacej pamäte vstupného toku a zobrazujú sa na obrazovke. Keď používateľ stlačí kláves Enter, všetky znaky sa nachádzajú vo vyrovnávacej pamäti; kurzor tiež prejde na začiatok nasledujúceho riadku nižšie, na obrazovke. Program potom pokračuje po vykonaní príkazu na čítanie vstupu na ďalší programový príkaz.

Objekt cin má metódy, ktorých sa táto časť venuje.

Čítanie prvého znaku

get (char_type & c):
Nasledujúci segment kódu ukazuje, ako načítať prvý znak z medzipamäte vstupného toku:

char ch;
cout << "Input text:" << endl;
cin.dostať (ch);
cout << ch << endl;

Prvý príkaz deklaruje znak bez priradenia. Druhé vyhlásenie hovorí používateľovi, aby zadal znak. Keď užívateľ napíše znak a stlačí kláves Enter, tretí príkaz skopíruje znak z medzipamäte vstupného toku do premennej ch.

Aj keby používateľ zadal viac ako jeden znak, segment kódu by vzal prvý znak.

get ():
get () bez argumentu, vráti desatinný kód ASCII. Zvážte nasledujúci segment kódu:

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

Ak je vstup „asdfg“, vráti sa 97, čo je desatinný kód ASCII pre písmeno „a“.

get (char_type * s, streamsize n)

Potom, čo používateľ zadá frázu a stlačí kláves Enter, je možné z vyrovnávacej pamäte cin stream extrahovať počet znakov začínajúcich od prvého. Môže sa použiť tento kód:

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

Ak je vstup „skvelí ľudia“, bude mať výstup „skvelý peo“, bude mať 9 znakov a nie 10. Znak reťazca NUL (\ 0) zaujíma desatú pozíciu v argumente get. Ak má mať 9 znakov v str, musí byť jeho veľkosť úložiska minimálne 10 a argument get () musí byť 11. Ak je požadovaný celý vstupný riadok, potom musí byť číslo pamäte reťazca minimálne počet zadaných znakov plus 1. Ak je teda napísaných 12 znakov pre celý riadok, potom by číslo malo byť 13 pre veľkosť úložného priestoru reťazca (str) a 13 pre argument get (). Upozorňujeme, že jedna medzera sa počíta ako jeden znak.

get (char_type * s, streamsize n, char_type delim)
Je možné extrahovať podreťazec, ktorý je ohraničený napravo, prvým výskytom konkrétneho znaku alebo veľkosťou podreťazca, ktorá prichádza ako prvá. Ak je vstupný text do nasledujúceho kódu „skvelí ľudia“, extrahuje sa „skvelý“:

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

Šiesta pozícia od začiatku je znak medzery a výlučne vymedzuje extrahovaný podreťazec. Šiesta pozícia je na prvom mieste pred jediným znakom „o“. Pamätajte, že veľkosť úložného priestoru pre str môže byť čo najvyššia.

Ak je vstupný text do nasledujúceho kódu „skvelí ľudia“, potom by sa extrahovalo „gr“:

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

Prvý výskyt znaku „e“ je na prvom mieste pred desiatou pozíciou.

Získanie všetkých znakov riadku

Po stlačení klávesu Enter je možné získať všetky znaky zadané do riadku, ako je znázornené v nasledujúcom kóde:

cout << "Input text:" << endl;
while (1)
char ch = (char) cin.get ();
cout << ch;
if (ch == '\ n')
prestávka;

Casting with (char), prevádza každé desatinné číslo na zodpovedajúci znak ASCII.

nahliadnuť ()

Členské funkcie get () nielenže čítajú nasledujúci znak; odstránia ho z vyrovnávacej pamäte toku. Členská funkcia peek () simple však číta nasledujúci znak (začínajúci od prvého) bez jeho odstránenia z medzipamäte. V nasledujúcom kóde je každý znak najskôr prečítaný pomocou funkcie peek () pred odstránením pomocou funkcie get (). Všetko, čo sa stane, keď používateľ stlačí kláves Enter:

cout << "Input text:" << endl;
while (1)
char ch = (char) cin.nahliadnuť ();
cout << ch;
cin.get ();
if (ch == '\ n')
prestávka;

Ak by ďalšie znaky neboli odstránené metódou get (), funkcia peek () by čítala iba prvý znak a slučka bude opakovane iterovať.

Zobrazenie a odstránenie znakov pred stlačením klávesu Enter

Všimnite si, že s objektom cin musí byť pred vykonaním akcie stlačené tlačidlo Enter. Je možné, že sa znaky zobrazujú počas písania a mazania pred stlačením klávesu Enter. To však znamená prepojenie s operačným systémom. Operačné systémy sa líšia. To znamená iné kódovanie pre rôzne operačné systémy. Táto téma si teda zaslúži úplne iný návod - pozri ďalej.

Odosielanie znakov a reťazcov na monitor

Objekt cout je objekt výstupného toku, ktorý je už inštancovaný a nachádza sa v štandardnej knižnici C ++. cout je hlavný objekt používaný na odosielanie znakov a reťazcov na monitor. To sa deje s operátorom vkladania, << . 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.

Výrazy, ktorých výsledkom sú skaláre, môžu byť argumentmi pre operátor vloženia. Operátor prevedie skalár na text a umiestni text do prúdu objektov cout. Keď je text zaslaný do objektu cout, normálne sa objaví na obrazovke (monitore). Príležitostne sa však nemusí prejaviť okamžite. Ak chcete na obrazovku vynútiť vloženie textu, vložte špeciálnu hodnotu „endl“ hneď po vložení textu. To spôsobí, že text bude vyprázdnený na obrazovku a bude pridaný nový riadok. Poznámka: '\ n' jednoducho pridá nový riadok, ale nevyprázdni text na obrazovku.

Nasledujúci program ukazuje, ako tlačiť hodnoty int, float a bežného textu na obrazovku:

#include
pomocou namespace std;
int main ()

int it = 5;
float ft = 63.5;
cout << "The " << it << " items cost $" << ft << " US." << endl;
návrat 0;

Výstup je:

5 položiek stálo 63 dolárov.5 USA.

Nasledujúci program ukazuje, ako sa tlačí reťazec objektu vytvoreného z triedy:

#include
pomocou namespace std;
struct St
char str [11] = "niektoré slová";
obj;
int main ()

cout << obj.str << '\n';
návrat 0;

Výstup je „niektoré slová“.

Argumenty pre program C ++

Vykonávanie programu začína od funkcie main (). Funkcia main () má v skutočnosti dva voliteľné parametre. Syntax funkcie main () s voliteľnými parametrami je:

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

návrat 0;

Predpokladajme, že názov spustiteľného súboru C ++ je „temp“. Predpokladajme, že argumenty, ktoré program potrebuje zo svojho prostredia (operačného systému), zadané používateľom, sú,

články 3 knižné pero "veľký dom"

Existuje 5 argumentov: „články“, „3“, „kniha“, „pero“ a „veľký dom“

Každá je textová. Číslovaný argument programu je text. Inými slovami, každý argument je reťazec. „Veľký dom“ je uvedený v úvodzovkách, pretože ide o frázu. Príkaz terminálu na spustenie tohto programu by bol:

./ temp articles 3 knižné pero "veľký dom"

Za predpokladu, že sa súborová teplota nachádza v domovskom adresári. Upozorňujeme, že argumenty oddeľujú medzery a nie čiarky.

Teraz je v syntaxi funkcie main () argc počet argumentov programu plus 1. V takom prípade existuje 5 argumentov pre program. Takže argc je 6. V syntaxi je argv [argc] pole ukazovateľov na reťazce. Prvá hodnota pre toto pole pri argv [0] je daná kompilátorom. Je to ukazovateľ na názov programového súboru. Zvyšok hodnôt sú ukazovatele na argumenty programu v zadanom poradí používateľa. Veľkosť tohto poľa je argc. V tomto prípade je veľkosť 1 + 5 = 6.

Predpokladajme, že pri kompilácii bude nasledujúci program pomenovaný temp:

#include
pomocou namespace std;
int main (int argc, char ** argv)

cout << argv[0] << ", " << argv[1] << ", " << argv[2] << ", " << argv[3] << ", " << argv[4] << ", " << argv[5] << endl;
návrat 0;

Upozorňujeme, že pole „char * argv [argc]“ bolo deklarované ako „char ** argv“.

Ak je tento program spustený pomocou príkazu terminálu,

./ temp articles 3 knižné pero "veľký dom"

potom bude výstup:

./ temp, articles, 3, book, pen, big house

Upozorňujeme, že cesta k adresáru bola zahrnutá do názvu spustiteľného súboru.

Upozorňujeme tiež, že počas chodu programu (volania programu) sa hodnota pre argc neodoslala.

Záver

Trieda iostream má štyri dôležité objekty, ktoré sú cout, cin, cerr a clog. cin je vstupný objekt, zatiaľ čo zvyšok sú výstupné objekty. Keď je program spustený, vstup do programu sa líši od času, keď má program začať bežať. Keď sa program spustí, vstup do programu sa spojí s príkazom na spustenie programu, oddelené medzerami.

Stredné tlačidlo myši nefunguje v systéme Windows 10
The stredné tlačidlo myši pomáha vám prechádzať dlhé webové stránky a obrazovky s množstvom údajov. Ak sa to zastaví, budete nakoniec používať klávesn...
Ako zmeniť ľavé a pravé tlačidlo myši na počítači so systémom Windows 10
Je úplnou normou, že všetky zariadenia počítačových myší sú ergonomicky navrhnuté pre pravákov. Existujú však dostupné myšacie zariadenia, ktoré sú šp...
Napodobňovanie kliknutí myšou vznášaním sa pomocou myši bez myši vo Windows 10
Používanie myši alebo klávesnice v nesprávnom postoji k nadmernému používaniu môže mať za následok veľa zdravotných problémov vrátane napätia, syndróm...