C ++

Valdymo pultas naudojant „iostream“ klases C ++

Valdymo pultas naudojant „iostream“ klases C ++

Skaičiuojant, konsolė yra kompiuterio klaviatūra ir kompiuterio monitorius. Anksčiau išvestis buvo siunčiama tiesiai į monitoriaus ekraną, o ne į monitoriuje rodomą langą. Paprastam kompiuterio vartotojui šiandien programos aiškiai nenaudoja monitoriaus. Šios programos naudoja monitoriuje rodomus langus. Tačiau kompiuterio programuotojui vis tiek reikia naudoti monitoriaus ekraną. Nors programuotojui vis dar reikia naudoti monitoriaus ekraną, operacinė sistema neleidžia to daryti. Operacinė sistema pateikia langą, imituojantį monitoriaus ekraną. „Windows“ operacinėje sistemoje šis langas vadinamas komandų eilute. „Linux“ operacinėje sistemoje ir jos variantuose šis langas vadinamas terminalu.

Tikimasi, kad skaitytojas jau žino, kaip naudotis komandų eilute ar terminalu. Šiame straipsnyje paaiškinta, kaip skaityti simbolius ir eilutes iš klaviatūros ir siųsti simbolius bei eilutes į terminalą (arba komandų eilutę). Kiekvienas C ++ programuotojas turi žinoti šiame straipsnyje.

Norint turėti įvestį iš klaviatūros ir išvestį į terminalą, programa turi prasidėti:

# įtraukti
naudojant vardų sritį std;

Straipsnio turinys

  • Siauro standartinio „iostream“ srauto objektai
  • Veikėjų ir eilučių gavimas iš klaviatūros
  • Simbolių rodymas ir ištrynimas prieš paspaudžiant Enter
  • Simbolių ir eilučių siuntimas į monitorių
  • Argumentai C ++ programai
  • Išvada

Siauro standartinio „iostream“ srauto objektai

„Iostream“ klasė, standartiniai objektai, „cout“, „cin“, „cerr“ ir „clog“, buvo supaprastinti ir jau yra standartinėje bibliotekoje. Programuotojas juos tiesiog naudoja, nebeapsikentęs.

cout

Šis funkcijos main () sakinys siunčia tekstą: „Tai yra išvestis.“Į terminalą:

cout << "This is output.";

cout yra išvesties iostream objektas standartinėje bibliotekoje, jau suaktyvintas. << 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.

Naudojant pirmiau pateiktą teiginį, iš naujo rodoma komandų eilutė rodoma išvesties frazės dešinėje. Jis nenueina į kitą eilutę. „Endl“ šio sakinio pabaigoje privers viską, kas spausdinama ekrane, kitoje eilutėje:

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

„Endl“ yra iš anksto nustatytas kintamasis. Ekrano turinį taip pat galima priversti kitoje eilutėje:

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

Naudojant „\ n“, visos teksto eilutės vis tiek gali pasirodyti ne iškart ekrane. „Endl“ praplauna visą ekrano eilutę.

Pastaba: „cout“ siunčiama eilutė yra dvigubose kabutėse, o išsiųstas simbolis - atskirose kabutėse. Stygų ir simbolių serija gali būti siunčiama viename sakinyje, prieš kiekvieną << . All that will appear in one line at the output if '\n' is not in the series.

cin

„cin“ yra standartinis „iostream“ įvesties objektas, jau sukurtas ir pasiekiamas standartinėje bibliotekoje. Apsvarstykite šį pagrindinio () funkcijos kodo segmentą:

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

Pirmasis sakinys skelbia tuščią 50 simbolių masyvą. Antrasis teiginys nurodo vartotojui kitoje ekrano eilutėje įvesti žodį ir paspausti klavišą Enter. Atkreipkite dėmesį į „endl“ naudojimą, kuris priverčia vartotoją įvesti tekstą kitoje ekrano eilutėje. Kai vartotojas įveda tekstą, įvestas tekstas aidi ekrane, kol jis patenka į „cin“ objektą. Paspaudus Enter, vykdomas trečiasis sakinys kodo segmente. Šis trečiasis sakinys siunčia įvestą tekstą kintamajam, txt. Šiuo atveju įvestas tekstas neturėtų būti ilgesnis nei 50 simbolių. Atkreipkite dėmesį į tai, kaip naudojamas ištraukimo operatorius >>. Paskutinis sakinys ekrane rodo įvestą tekstą.

„cin“ gali paimti iš klaviatūros daugiau nei vieną žodį, atskirtą tarpais. Šie žodžiai turės būti išskirti į skirtingus kintamuosius. Tai iliustruoja šis kodo segmentas:

char txt [20];
int tai;
plūdės pėdos;
cout << "Enter 3 values and press Enter:" <> txt >> it >> ft;
cout << txt << " << it << " << ft << endl;

Atkreipkite dėmesį į teiginį:

cin >> txt >> it >> ft;

Pirmasis žodis ištraukiamas į txt, kitas šalia jo, o paskutinis - iki ft. Jei įvestis buvo,

vienas 25 3.6

tada kodo segmento išvestis būtų,

vienas 25 3.6

cerr

Šioje programoje yra klaida:

# įtraukti
naudojant vardų sritį std;
int main ()

in myInt;
grąžinti 0;

Pirmasis teiginys main () yra neteisingas. Jei failo, kurio kodas yra, pavadinimas yra „temp.cc “ir gautas vykdomasis failas turi būti vadinamas„ temp “, tada g ++ komanda nusiųs kompiliatoriaus klaidos pranešimą į failą„ error “.txt “:

g ++ -o temp temp.cc 2> klaida.txt

Jei failas „klaida.txt “nėra, jis būtų sukurtas. Atkreipkite dėmesį į dalį „2> klaida.txt “komandos g ++.

Ekranas yra standartinė išvesties paskirtis ir standartinė klaidos paskirties vieta. Jei „2> klaida.txt “praleidžiamas iš komandos g ++, tada kompiliatoriaus klaidos pranešimas bus išsiųstas į standartinę klaidos vietą, kuri vis dar yra ekranas (monitorius).

Srauto objektas, kuris rodo standartinę išvesties paskirtį, yra „cout“. Srauto objektas, kuris rodo standartinę klaidos paskirtį, yra cerr. Programos vykdymo laiko klaidą galima siųsti į ekraną taip:

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

užsikimšti

Programa skirtingais laikais ima skirtingas įvestis. Visas įvestis galima iš naujo parodyti ekrane. Visas įvestis galima išsaugoti faile. Tai yra medienos ruoša. Standartinis registravimo tikslas yra ekranas. Standartinis registravimo srauto objektas yra kamštis. Šis kodas ekrane vėl parodys įvestą tekstą:

char txt [50];
cout<<"Enter text and press Enter:"<>txt;
užsikimšti<Jei įvesties tekstas yra „įvesties_tekstas“, užsikimšus ekrane vėl bus rodomas „įvesties_tekstas“.

Praktiškai registravimas paprastai nukreipiamas į failą. Tai iliustruoja ši programa:

# įtraukti
naudojant vardų sritį std;
int main ()

laisvai atidaryti ("žurnalas.txt "," w ", stdout);
cout << "input_text" << endl;

Atkreipkite dėmesį į funkcijos „freopen“ () naudojimą ir jos argumentus. Pirmasis jos argumentas yra žurnalo failo pavadinimas. Jei failo nėra, jis būtų sukurtas. Antrasis jos argumentas yra „w“ už „rašyti“. Trečiasis jo argumentas yra standartinio išvesties standartas. Antrasis pagrindinės () funkcijos sakinys naudoja „cout“ registravimo teksto siuntimui į failą. Pastaba: tikrasis įvesties kodas šioje programoje nebuvo parodytas.

Veikėjų ir eilučių gavimas iš klaviatūros

Kol vartotojas rašo įvestį, simboliai siunčiami į įvesties srauto buferį ir rodomi ekrane. Kai vartotojas paspaudžia klavišą Enter, visi simboliai yra buferyje; taip pat žymeklis eina į kitos eilutės pradžią žemiau, ekrane. Tada programa eina prie kito programos teiginio, po įvesties skaitymo teiginio.

„Cin“ objekte yra metodai, su kuriais susijęs šis skyrius.

Pirmojo simbolio skaitymas

gauti (char_type & c):
Šis kodo segmentas rodo, kaip skaityti pirmąjį simbolį iš įvesties srauto buferio:

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

Pirmasis sakinys deklaruoja simbolį be priskyrimo. Antrasis teiginys nurodo vartotojui įvesti simbolį. Kai vartotojas įveda simbolius ir paspaudžia klavišą Enter, trečiasis sakinys nukopijuoja simbolį iš įvesties srauto buferio į kintamąjį, ch.

Net jei vartotojas įrašė daugiau nei vieną simbolį, pirmąjį simbolį užims kodo segmentas.

gauti ():
get () be argumento, pateikia dešimtainį ASCII kodą. Apsvarstykite šį kodo segmentą:

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

Jei įvestis yra „asdfg“, tada bus grąžinta 97, tai yra dešimtainis „a“ ASCII kodas.

gauti (char_type * s, srauto dydis n)

Vartotojui įvedus frazę ir paspaudus klavišą Enter, iš „cin stream“ buferio galima išgauti keletą simbolių, prasidedančių pirmuoju. Galima naudoti šį kodą:

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

Jei įvestis yra „puikūs žmonės“, tai bus „puikus peo“, sudarytas iš 9, o ne 10 simbolių. Stygos NUL simbolis (\ 0) užima dešimtąją poziciją get argumente. Taigi, norint turėti 9 simbolius str, jo saugyklos dydis turi būti bent 10, o get () argumentas turi būti 11. Jei reikia visos įvesties eilutės, eilutės saugyklos numeris turi būti bent jau įvestų simbolių skaičius plius 1. Taigi, jei visoje eilutėje įvesta 12 simbolių, eilutės (str) saugyklos dydžio skaičius turi būti 13 ir argumento get () skaičius - 13. Atminkite, kad vienas tarpas skaičiuojamas kaip vienas simbolis.

gauti (char_type * s, streamsize n, char_type delim)
Galima išskirti pogrupį, atskirtą dešinėje, pirmą kartą atsiradus tam tikram simboliui, arba pogrupio srauto dydžiu, kuris kada nors būna pirmas. Jei šio kodo įvesties tekstas yra „puikūs žmonės“, tada bus išgautas „puikus“:

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

Šeštoji pozicija nuo pat pradžių yra tarpo ženklas, ir ji išskirtinai išskiria ištrauką. Šeštoji pozicija yra pirmoji prieš vienintelį simbolį „o“. Atminkite, kad str talpos dydis gali būti kuo didesnis.

Jei šio kodo įvesties tekstas yra „puikūs žmonės“, tada bus išgautas „gr“:

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

Pirmasis „e“ atvejis yra pirmas prieš dešimtąją poziciją.

Kaip gauti visus eilutės simbolius

Paspaudus klavišą Enter, visus simbolius, įvestus eilutėje, galima gauti taip, kaip parodyta šiame kode:

cout << "Input text:" << endl;
o (1)
char ch = (char) cin.gauti ();
cout << ch;
jei (ch == '\ n')
pertrauka;

Liejimas su (char) kiekvieną dešimtainį skaičių paverčia atitinkamu ASCII simboliu.

žvilgtelėti ()

„Get“) nario funkcijos ne tik perskaito kitą simbolį; jie pašalina jį iš srauto buferio. Tačiau „peek ()“ nario funkcija nuskaito kitą simbolį (pradedant nuo pirmojo), neišimdama jo iš buferio. Šiame kode kiekvienas simbolis prieš jį pašalinant pirmiausia nuskaitomas naudojant funkciją „peek“ (). Viskas, kas nutinka vartotojui paspaudus Enter klavišą:

cout << "Input text:" << endl;
o (1)
char ch = (char) cin.žvilgtelėti ();
cout << ch;
cin.gauti ();
jei (ch == '\ n')
pertrauka;

Jei kiti simboliai nebuvo pašalinti naudojant get (), peek () skaitys tik pirmąjį simbolį, o ciklas kartosis neribotą laiką.

Simbolių rodymas ir ištrynimas prieš paspaudžiant Enter

Atkreipkite dėmesį, kad naudojant „cin“ objektą, prieš pradedant veikti, reikia paspausti klavišą Enter. Na, prieš spaudžiant klavišą Enter, galima rašyti ir ištrinti simbolius. Tačiau tai reiškia sąsają su operacine sistema. Operacinės sistemos skiriasi. Taigi tai reiškia skirtingą skirtingų operacinių sistemų kodavimą. Taigi ši tema nusipelno visai kitokios pamokos - žiūrėkite vėliau.

Simbolių ir eilučių siuntimas į monitorių

„Cout“ objektas yra išvesties srauto objektas, jau sukurtas ir pateiktas C ++ standartinėje bibliotekoje. cout yra pagrindinis objektas, naudojamas siunčiant simbolius ir eiles į monitorių. Tai daroma su įterpimo operatoriumi, << . 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.

Išraiškos, dėl kurių gaunami skaliarai, gali būti argumentai įterpimo operatoriui. Operatorius skaliarį paverčia tekstu ir įdeda tekstą į cout objekto srautą. Kai tekstas siunčiamas į objektą „cout“, jis paprastai rodomas ekrane (monitoriuje). Tačiau kartais tai gali pasirodyti ne iš karto. Jei norite priversti tekstą ekrane, įterpkite specialią reikšmę „endl“ iškart įterpę tekstą. Dėl to tekstas bus nuleistas į ekraną ir bus pridėta nauja eilutė. Pastaba: „\ n“ paprasčiausiai prideda naują eilutę, bet nepavalo teksto į ekraną.

Ši programa parodo, kaip ekrane atspausdinti int, plūduriuojančio ir įprasto teksto reikšmes:

# įtraukti
naudojant vardų sritį std;
int main ()

int tai = 5;
plūdės pėda = 63.5;
cout << "The " << it << " items cost $" << ft << " US." << endl;
grąžinti 0;

Rezultatas yra:

5 daiktai kainavo 63 USD.5 JAV.

Ši programa parodo, kaip spausdinama objekto eilutė, sukurta iš klasės:

# įtraukti
naudojant vardų sritį std;
struct St
char str [11] = "kai kurie žodžiai";
obj;
int main ()

cout << obj.str << '\n';
grąžinti 0;

Išvestis yra „kai kurie žodžiai“.

Argumentai C ++ programai

Programos vykdymas prasideda nuo pagrindinės () funkcijos. Pagrindinė () funkcija iš tikrųjų turi du pasirenkamus parametrus. Funkcijos „Main“ () sintaksė su pasirinktinais parametrais yra tokia:

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

grąžinti 0;

Tarkime, kad vykdomojo C ++ failo pavadinimas yra „temp“. Tarkime, kad argumentai, reikalingi programai iš jos aplinkos (operacinės sistemos), kuriuos įveda vartotojas, yra,

straipsniai 3 knygų rašiklis "didelis namas"

Čia yra 5 argumentai: „straipsniai“, „3“, „knyga“, „rašiklis“ ir „didelis namas“

Kiekvienas yra tekstas. Numeruotas programos argumentas yra tekstas. Kitaip tariant, kiekvienas argumentas yra eilutė. „Didelis namas“ yra kabutėse, nes tai frazė. Terminalo komanda paleisti šią programą būtų:

./ temp straipsniai 3 knygų rašiklis "didelis namas"

Darant prielaidą, kad failo temp yra namų kataloge. Atkreipkite dėmesį, kad argumentai atskiriami tarpais, o ne kableliais.

Dabar pagrindinėje () funkcijos sintaksėje argc yra programos argumentų skaičius plius 1. Šiuo atveju yra 5 programos argumentai. Taigi, argc yra 6. Sintaksėje argv [argc] yra rodyklių į eilutes masyvas. Pirmąją šio masyvo reikšmę argv [0] pateikia kompiliatorius. Tai rodo programos failo pavadinimą. Likusios reikšmės nurodo programos argumentus vartotojo įvesta tvarka. Šio masyvo dydis yra argc. Šiuo atveju dydis yra 1 + 5 = 6.

Tarkime, kad kompiliuojant ši programa pavadinta temp:

# įtraukti
naudojant vardų sritį std;
int main (int argc, char ** argv)

cout << argv[0] << ", " << argv[1] << ", " << argv[2] << ", " << argv[3] << ", " << argv[4] << ", " << argv[5] << endl;
grąžinti 0;

Čia atkreipkite dėmesį, kad masyvas "char * argv [argc]" buvo paskelbtas kaip "char ** argv".

Jei ši programa vykdoma su terminalo komanda,

./ temp straipsniai 3 knygų rašiklis "didelis namas"

tada išvestis būtų:

./ temp, straipsniai, 3, knyga, rašiklis, didelis namas

Atminkite, kad katalogo kelias buvo įtrauktas į vykdomojo failo pavadinimą.

Taip pat atkreipkite dėmesį, kad vykdant programą (iškviečiant programą) argc reikšmė nebuvo išsiųsta.

Išvada

„Iostream“ klasėje yra keturi svarbūs objektai: cout, cin, cerr ir clog. cin yra įvesties objektas, o likusieji yra išvesties objektai. Kol programa veikia, įvestis į programą skiriasi nuo programos pradžios. Kai programa pradeda veikti, programos įvestis sujungiama su komanda paleisti programą, atskirta tarpais.

How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Peržiūrėkite pelės mygtukus skirtingai programinei įrangai naudodami „X-Mouse Button Control“
Galbūt jums reikia įrankio, kuris galėtų pakeisti jūsų pelės valdymą kiekvienoje jūsų naudojamoje programoje. Tokiu atveju galite išbandyti programą, ...
„Microsoft Sculpt Touch“ belaidžio pelės apžvalga
Neseniai skaičiau apie „Microsoft Sculpt Touch“ belaidę pelę ir nusprendė ją nusipirkti. Kurį laiką naudojęs, nusprendžiau pasidalinti savo patirtimi....