Până acum, am lucrat doar cu date numerice, atât întregi, cât și reale. Dar foarte des (dacă nu vorbim despre calcule pur științifice), trebuie să operăm cu informații textuale. Acest prospect conține informații de bază despre principiile de lucru cu simboluri și texte.
Caracterul char caracter
Orice text este format din caractere. Un simbol este o anumită pictogramă, o imagine. Unul și același simbol poate fi scris în diferite moduri, de exemplu, doi oameni de diferite de scriere de mână litera „A“, și chiar și în reprezentarea pe calculator a aceeași literă va arăta diferit în cazul în care afișajul său fonturi diferite, acesta va fi în continuare același simbol. Alt lucru este, de asemenea, adevărat: simboluri diferite pot fi scrise în același mod, de exemplu, aici sunt două litere diferite, una - alfabetul latin, cealaltă - rusă: "A" și "A". În ciuda faptului că ele arată la fel, este mai convenabil să le considerăm ca simboluri diferite.
Deci, modul de stocare a informațiilor de text în computer nu este direct legat de imaginea acestui text. În loc de simboluri, numerele lor sunt stocate - coduri numerice, dar modul în care arată un simbol cu un cod numeric dat pe ecran depinde direct de ce font este utilizat pentru a afișa caracterele. Desigur, ar fi mai bine să convenim asupra unui mod uniform de codificare a simbolurilor cu coduri numerice, altfel textul scris pe un computer nu poate fi citit pe alt computer.
Inițial a fost de acord să codifice un caracter pentru a aloca un octet, adică 8 biți de informații. Astfel, pot fi codificate 256 de valori diferite, adică 256 de caractere diferite pot fi folosite în text. Acest lucru este suficient pentru a afișa toate simbolurile alfabetului latin, numere, semne de punctuație și alte simboluri. Un standard care indică ce coduri numerice corespund la care simboluri de bază se numește ASCII. Tabelul ASCII conține simboluri cu coduri de la 0 la 127, adică ASCII este un cod de șapte biți. Aici este tabelul ASCII:
În acest caz, simbolurile cu coduri mai mici de 32 sunt caractere speciale de control care nu sunt afișate pe ecran. De exemplu, pentru a marca sfârșitul liniei pe un sistem Linux folosind un singur caracter cu codul 10, și de sistem Windows - două coduri de caractere consecutive 13 și 10 caractere cu coduri de 48-57 corespund unei urmărire a cifre arabe (simbol nota cu codul 0 - nu este un simbol care apare pe ecran ca „0“), caractere cu coduri 65-90 - litere mari ale alfabetului latin, ca în cazul în care pentru a adăuga codul lor de 32, atunci vom obține literele mici ale alfabetului latin. În intervalele dintre intervalele indicate sunt semne de punctuație, operații matematice și alte simboluri.
Vom lucra doar cu caractere ASCII, deci doar un octet va fi folosit pentru a reprezenta un caracter.
În C ++, un tip de date de tip char este utilizat pentru a stoca un caracter unic de octet. variabilă de tip char poate fi considerată în două moduri: ca un întreg, care ocupă un octet și capabil de a primi o valoare -128-127 (. typ semnat char este, de asemenea, nesemnate modificarea unsigned char ia valori de la 0 la 255.) și ca un singur caracter de text. Definiția caracterelor poate fi semnată și nesemnată, în funcție de sistemul de operare și de compilator. Prin urmare, nu se recomandă utilizarea tipului de caractere, este mai bine să se indice explicit dacă este semnat sau nesemnificat.
La fel ca întregi, datele char pot fi adăugate, scăzute, înmulțite și chiar împărțite. Dar dacă operațiile de multiplicare și de divizare, ca regulă, sunt lipsite de sens, atunci adunarea și scăderea sunt destul de semnificative. De exemplu, dacă adăugați 1 la simbolul "A", obțineți caracterul "B". și dacă scadeți 1, veți obține caracterul '@'. Adică, în fragmentul următor de cod, litera B.
În acest exemplu, puteți vedea că variabilelor de tipul char pot fi atribuite valori egale cu codurile de caractere ASCII, dacă aceste caractere sunt citate. Adică, înregistrarea "A" se va potrivi cu simbolul A. sau codul ASCII 65.
De asemenea, în acest exemplu, puteți vedea că atunci când afișați o variabilă de tip char, vom vedea imaginea acestui simbol. Cum pot afla valoarea simbolului codului ASCII? Nu este nevoie să fie recunoscută, simbolul în sine este codul ASCII. Și cum să o aduci pe ecran? Este foarte simplu - trebuie să convertiți valoarea unei valori char la o valoare int. De exemplu, astfel:
Numele de tip scris în paranteză înainte de valoare este operatorul de conversie a valorii la tipul specificat.
În mod similar, atunci când se citește o variabilă de caractere prin fluxul cout. Se citește un caracter din fluxul de intrare, variabila primește o valoare egală cu codul său ASCII. De exemplu, dacă scrieți un program care conține o linie
rulați-l, introduceți caracterul A (fără citate!), atunci variabila c va conține valoarea 65 - codul ASCII al simbolului A.
Variabile precum char pot fi atribuite în mod explicit și valori numerice. De exemplu, puteți face acest lucru:
Acest program va afișa două rânduri: "A 65" și "
126 ", adică caracterele cu codurile ASCII 65 (A) și 126 (
) și codurile ASCII.
Puteți aranja citirea secvențială după simbol a întregului flux de intrare folosind buclă în timp.
În acest exemplu, programul va citi caracterul de simbol al fluxului de intrare (implicit - intrarea de la tastatură), până când va întâlni sfârșitul fișierului. Pentru a informa programul despre completarea fluxului de intrare la intrarea de pe tastatură, este necesar să apăsați tastele Ctrl-d de pe sistemul Linux și Ctrl-z în sistemul Windows.
Acest program va ignora delimitatorii la citirea datelor: spații, linii noi și file. Dacă doriți ca toate caracterele, inclusiv delimitatorii, să fie citite în variabila c, trebuie să instalați manipulatorul noskipws pentru fluxul de intrare cin cu următoarele instrucțiuni:
Corzi în C ++
Un șir de text este o secvență de caractere. Deoarece caracterele din linie sunt numerotate, reprezentarea naturală a șirului ar fi o serie de caractere. Deci, siruri de caractere și prezentate într-un limbaj C - Un șir este un șir de caractere și pentru a indica sfârșitul liniei de a folosi simboluri cu cod ASCII 0, care vă permite să stocați rânduri de lungime variabilă (care este, o matrice char siruri de [n] pot fi stocate de orice lungime care să nu depășească . n-1 Această metodă de stocare siruri a dat naștere unui număr de inconveniente: orice șir a fost restricționată de lungimea dimensiunii matrice, și pentru a calcula lungimea șirului era necesar să se treacă prin întreaga linie până când simbolul de zero, adică definirea numărului lungimea necesară liniei de operațiuni proporționale Această lungime este de această lungime.
În C ++, există un tip de date de tip șir mai perfect pentru reprezentarea șirurilor. care se bazează pe aceeași serie de caractere, terminată de un caracter nul, dar conține o serie de caracteristici suplimentare. Pentru a lucra cu șiruri de caractere C ++, trebuie să conectați o descriere a șirului de tip la începutul programului. care se află în același dosar:
Variabila pentru stocarea datelor cu șir este declarată după cum urmează:
Puteți atribui o valoare constantă unei variabile de șir după cum urmează:
Odată cu introducerea liniilor în textul programului în ghilimele, am întâlnit deja când extragem textul în fluxul cout. Rețineți că constantele tipului char sunt scrise în citate simple, iar liniile sunt în ghilimele duble. În special, "A" este un simbol, iar "A" este un șir constând dintr-un singur caracter. Prin urmare, o variabilă de tipul char nu poate fi setată la "A". Deoarece au tipuri de date incompatibile.
De fapt, o variabilă de șir de tip este o matrice de caractere și cu fiecare caracter al acestui șir puteți lucra separat, referindu-se la ele prin index, în ceea ce privește elementele matricei. De exemplu:
Pentru a determina lungimea șirului, există metoda size (). aplicată șirului. Se întoarce un număr întreg, numărul de caractere din șir. Poate fi folosit astfel:
În primul rând, avem nevoie de două operații pe linii: adăugând două linii și schimbând dimensiunea liniei.
Operația principală pe linii este adăugată: de exemplu, când adăugați "Bună ziua" și "lumea!" veți obține șirul "Bună ziua, lumea!". Această operație pe șiruri este numită concatenare.
Iată un exemplu de utilizare a concatenării șirului:
O altă operație este de a schimba mărimea șirului. Pentru aceasta, există o metodă de redimensionare. care este aplicat șirului. Metoda de redimensionare are două forme de înregistrare: unul și doi parametri. Dacă se numește cu un parametru, acest parametru specifică noua lungime a șirului. De exemplu, aceasta:
Al doilea parametru al metodei de redimensionare specifică un caracter care va fi umplut cu caractere în șir dacă dimensiunea rândului crește ca urmare a redimensionării. De exemplu:
Când citiți linii din fluxul de intrare, toate caracterele sunt citite, cu excepția caracterelor de delimitare (spații, file și linii noi), care reprezintă limitele dintre linii. De exemplu, dacă următorul program
introduceți textul "Mama frame soap" (cu un număr arbitrar de spații între cuvinte), apoi șirul "Mama" va fi scris în matricea S1. în S2 - "săpun". în S3 - "cadrul".
Astfel, puteți organiza citirea întregului fișier prin cuvinte, după cum urmează:
Dacă doriți să citiți un șir cu toate spațiile, trebuie să utilizați funcția getline după cum urmează:
În acest caz, dacă executați acest program și introduceți linia "Mama frame soap". atunci aceasta este valoarea care va fi atribuită șirului S. Puteți număra întregul flux de intrare cu linii utilizând următorul cod: