Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Citește un șir de caractere cu spații în C++

Să se citească de la tastatură un șir de caractere ce conține spații.

Exemplu de șir cu spații: Ana are mere (dacă folosim doar cin, vom citi doar cuvântul Ana).

Din fericire, există o funcție care ne ajută să citim un șir de caractere cu spații, până la întâlnirea caracterului newline (\n).

Ce este cin.getline()?

Funcția cin.getline ne ajută să citim un șir de caractere ce conține și spații.

Sintaxa funcției cin.getline

Sintaxa ei este următoarea:

cin.getline(s, dimensiune);

Și înseamnă: Citește șirul s până la caracterul newline, șir ce conține maximum dimensiune caractere.

Exemplu

Iată un exemplu de folosire a funcției, care citește șirul cu spații și îl afișează:

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim (cu cin.getline) șirul s
    char s[100];
    cin.getline(s, 100); //Citim maximum 100 de caractere
    cout << s;
    return 0;
}

Dacă citim următorul text:

Masina de spalat

Se va afișa pe ecran același șir.

Problemă cu citirea când folosim cin.getline()

După cum am menționat mai devreme, cin.getline() citește caractere până la apariția caracterului newline. Acest lucru merge cum ne-am fi gândit în mod normal, dar dacă de exemplu citim ceva cu cin>> înainte să citim cu cin.getline, vom obține următorul comportament:

int n;
char s[101];
cin >> n;
cin.getline(s, 100);
cout << s;

Programul se așteaptă să citească un număr și un șir de caractere (cu spații). Dacă i-am da numărul și șirul:

2
Ana are mere

Nu se va afișează nimic. De ce? Pe scurt, după ce am citit numărul 2, programul vrea să citească în continuare de pe prima linie, pe care se mai află doar caracterul newline. Astfel, șirul s citește nimic, după care ia caracterul newline și doar după aceea trece la al doilea rând.

Pentru a repara problema, trebuie să sărim cumva peste caracterul newline. Din fericire, funcția cin.get() ia primul caracter și îl citește. Astfel, codul funcțional devine:

int n;
char s[101];
cin >> n;
cin.get(); //Pentru a sări peste caracterul newline
cin.getline(s, 100);
cout << s;

Alte resurse sau bibliografie

Cuprinsul lecției

Se încarcă…

Citește și

Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleCe înseamnă endl în C++?Numărul de cifre ale factorialului unui numărVerificarea unui an bisect în C++Al N-lea termen dintr-o progresie geometricăInversarea unui șir de caractere în C++Cel mai semnificativ bit în C++Al N-lea termen dintr-o progresie aritmeticăTutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Aflarea sumei primelor N sume GaussCiurul lui Eratostene în C++Cifra maximă a unui număr recursiv în C++Ce este o variabilă unsigned în C++?Cel mai puțin semnificativ bit în C++Cel mai mare divizor comun (CMMDC) a două numere în C++Verifică dacă un număr aparține șirului Fibonacci în C++Verifică dacă un număr dat este o putere de 2 în C++Suma numerelor naturale dintr-un interval dat în C++Instrucțiunea break (structuri repetitive)Vectori de frecvență (de apariții) în C++Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Numărul minim de peroane pentru o gară în C++Materia pentru olimpiada de informatică - tot ce trebuie să știiCel mai frecvent element dintr-un șir în C++Distanța dintre două puncte în C++Numărul combinărilor în C++ (formula combinărilor)Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorInterschimbarea a două variabile în C++ (3 metode)De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Rădăcina cubică a unui număr în C++ (cube root)Interclasarea a doi vectori în C++Cum să calculezi instant 2 la puterea N în C++Valoarea absolută (modulul) unui număr în C++Do while vs while în C++ - Care e diferența?Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicFactorialul unui număr în C++Combinatorică în C++: permutări, aranjamente, combinări și alteleAria unui triunghi folosind coordonatele acestora în C++Verifică dacă o literă este vocală în C++Instrucțiunea while (structuri repetitive)Complexitatea unui algoritm (timp și spațiu) în C++Instrucțiunea de decizie în C++: if, else, switch, caseCodul ASCII (tabel complet)Afișarea divizorilor primi ai unui număr în C++Verifică dacă un număr este par sau impar fără modulo în C++Transformarea unui număr din baza 2 în baza 10 în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăInstrucțiunea for (structuri repetitive)Inversarea unui vector în C++Vectorii în C++: declarare și parcurgereGenerarea șirului Fibonacci generalizat în C++Șirul lui Fibonacci în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Copiuțe: Cifrele unui numărTransformarea unui număr din baza 10 în baza 2 în C++Comentarii în C++Citirea și afișarea matricelor în C++Bordarea unei matrice în C++Divide et Impera (metodă de programare C++)Cifra de control a unui numărTipuri de date în C++: numere întregi, reale, caractere și alteleOglinditul unui număr în C++Numărul permutărilor în C++ (formula permutărilor)Oglinditul recursiv al unui număr în C++Pointer în C++. Variabile de tipul char * (char steluță)Verificare dacă șir de caractere este palindrom în C++Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Transformarea unei litere mari în literă mică în C++Verifică dacă un caracter este literă în C++Verificare dacă un număr este palindrom în C++Calculul combinărilor de n luate câte k (nCk) în C++Verifică dacă o literă este mică sau mare în C++Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Vectorii în C++: citire și afișareNumărul de divizori primi ai unui număr în C++Verificare număr prim în C++ (Clasa a IX-a)CMMDC recursiv a două numere naturale în C++Aria și circumferința unui cerc în C++Câte numere naturale sunt într-un interval dat? (C++)Numărul de apariții al unui număr într-un vector în C++Maximul și minimul a două valori în C++Funcții în C++. Ce sunt subprogrameleNumărul de divizori al unui număr în C++Recursivitate în C++Cel mai mic număr cu suma cifrelor N în C++Prima cifră a unui număr în C++Cifra maximă și minimă a unui număr în C++Suma divizorilor unui număr în C++Maximul și minimul a n valori în C++Instrucțiunea continue (structuri repetitive)Radicalul unui număr în C++ (rădăcina pătrată)Verifică dacă un caracter este cifră în C++Cum să afișezi partea întreagă a unui număr real în C++Cum să citești și să afișezi în fișiere în C++Șiruri de caractere în C++. Tot ce trebuie să știiSuma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Numărul aranjamentelor în C++ (formula aranjamentelor)Instrucțiunea do while (structuri repetitive)Numere triunghiulare. Verificarea unui număr triunghiularSuma elementelor unui vector recursiv în C++Citește un șir de caractere cu spații în C++Verifică dacă trei puncte sunt coliniare C++Structuri repetitive (while, do while, for, etc)Ce înseamnă variabilă globală și locală în C++?Suma 1 + 2 + 3 + ... + N în C++Al N-lea termen Fibonacci în C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Află secolul unui an citit de la tastatură în C++Maximul și minimul a trei valori în C++Căutare binară în C++Cea mai lungă secvență de elemente crescătoare în C++Ce este o funcție void în C++?Transformarea unei litere mici în literă mare în C++Indicatorul lui Euler în C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Maximul și minimul unui vector în C++Mediana unui șir de valori în C++Tipul struct în C++. Ce sunt structurile de date neomogeneSortare crescătoare recursivă în C++ - Merge sort și Bubble sortFuncții predefinite în C++ (matematice, șiruri de caractere)Matrice pătratice în C++. Diagonala principală și secundarăAfișarea elementelor unui vector recursiv în C++Operații cu numere mari în C++ - Toate funcțiile explicate

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont