std::cout în C++

Afișează text și valori în consolă, cu operatorul <<.

Sintaxă
#include <iostream>
std::cout << valoare1 << valoare2 << ...;

Ce face std::cout

std::cout (de la „character output”) este ieșirea standard a programului: tot ce îi trimiți apare în consolă. Valorile se trimit cu operatorul <<, care se poate înlănțui: std::cout << "Ana are " << 21 << " de ani";.

std::cout știe să afișeze texte, numere, caractere și valori bool (implicit ca 1 și 0). Nu adaugă singur spații sau rânduri noi: pentru un rând nou scrii '\n' sau std::endl.

În C++23 există și std::println, care folosește acolade {} în loc de << și este de multe ori mai ușor de citit. std::cout rămâne însă cel mai răspândit în cod și în manuale.

Ce returnează

Expresia std::cout << x returnează tot std::cout, de aceea poți înlănțui mai multe <<.

Exemple

Exemplul 1: Primul program

#include <iostream>

int main() {
    std::cout << "Salut, lume!\n";
}

Rezultat

Salut, lume!

Exemplul 2: Text, variabile și rânduri noi

Operatorul << se înlănțuie. Spațiile dintre cuvinte trebuie scrise în text.

#include <iostream>
#include <string>

int main() {
    std::string nume = "Ana";
    int varsta = 21;
    double medie = 9.45;

    std::cout << "Nume: " << nume << '\n';
    std::cout << "Vârsta: " << varsta << " ani\n";
    std::cout << "Media: " << medie << '\n';
    std::cout << nume << varsta << '\n';   // fără spațiu între ele
}

Rezultat

Nume: Ana
Vârsta: 21 ani
Media: 9.45
Ana21

Exemplul 3: Numere, caractere și bool

Un bool apare ca 1/0, iar un char apare ca literă. Expresiile se pun între paranteze, ca operatorii să nu se amestece cu <<.

#include <iostream>

int main() {
    char nota = 'A';
    bool promovat = true;
    std::cout << "Nota: " << nota << '\n';
    std::cout << "Promovat: " << promovat << '\n';
    std::cout << "Total: " << (3 * 25 + 4) << " lei\n";
    std::cout << "10 / 4 = " << 10 / 4 << " (împărțire între întregi)\n";
}

Rezultat

Nota: A
Promovat: 1
Total: 79 lei
10 / 4 = 2 (împărțire între întregi)

Greșeli frecvente

  • Scrii std::cout << a < b; sau std::cout << a & b; fără paranteze: operatorii se leagă greșit și primești o eroare greu de înțeles. Pune expresiile între paranteze: std::cout << (a < b);.
  • Ai uitat #include <iostream> sau prefixul std::. Fără ele compilatorul nu știe ce este cout.
  • Folosești std::endl la fiecare rând într-o buclă mare: golirea bufferului de fiecare dată încetinește programul. '\n' este suficient.

Comenzi înrudite

  • std::println: Afișează text formatat cu acolade {} și trece pe rândul următor (C++23).
  • std::cin: Citește valori de la tastatură în variabile, cu operatorul >>.
  • std::cerr: Scrie mesaje de eroare și de jurnal pe canalul de eroare, separat de ieșirea normală.
  • std::endl: Trece pe rândul următor și golește bufferul; std::flush doar golește bufferul.
  • std::setw: Stabilește lățimea minimă a următoarei valori, cu aliniere și caracter de umplere.