Ce face std::println
std::println este varianta modernă a lui std::cout << ... << '\n': primește un șablon cu marcaje {}, le înlocuiește cu valorile date și adaugă un rând nou la final.
Marcajele pot avea specificații după două puncte: {:.2f} (două zecimale), {:5} (lățime 5), {:<10} / {:>10} / {:^10} (aliniere), {:x} (hexazecimal), {:+} (semn). Sunt aceleași reguli ca la std::format.
În C++23 poate afișa direct și containere: un std::vector apare ca [1, 2, 3], iar un std::map ca {"a": 1}. Textul UTF-8 cu diacritice se afișează corect.
Parametri
| Parametru | Descriere |
|---|---|
sablon |
Textul cu marcaje {}, cunoscut la compilare. |
valori... |
Valorile care înlocuiesc marcajele, în ordine. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Afișare simplă
#include <print>
#include <string>
int main() {
std::string oras = "Brașov";
int locuitori = 237'589;
std::println("Salut, lume!");
std::println("{} are {} de locuitori.", oras, locuitori);
}
Rezultat
Salut, lume!
Brașov are 237589 de locuitori.
Exemplul 2: Un mic tabel cu prețuri
{:<10} aliniază la stânga pe 10 coloane, iar {:>8.2f} aliniază la dreapta un număr cu 2 zecimale pe 8 coloane.
#include <print>
int main() {
std::println("{:<10}{:>8}", "Produs", "Preț");
std::println("{:<10}{:>8.2f}", "Pâine", 4.5);
std::println("{:<10}{:>8.2f}", "Lapte", 7.99);
std::println("{:<10}{:>8.2f}", "Cafea", 32.0);
}
Rezultat
Produs Preț
Pâine 4.50
Lapte 7.99
Cafea 32.00
Exemplul 3: Afișarea directă a containerelor
Din C++23, vectorii, perechile și dicționarele au un format implicit.
#include <map>
#include <print>
#include <string>
#include <vector>
int main() {
std::vector<int> note = {9, 7, 10};
std::map<std::string, int> stoc = {{"mere", 12}, {"pere", 5}};
std::println("Note: {}", note);
std::println("Stoc: {}", stoc);
}
Rezultat
Note: [9, 7, 10]
Stoc: {"mere": 12, "pere": 5}
Greșeli frecvente
- Numărul de marcaje nu corespunde cu numărul de valori: dacă sunt mai puține valori decât
{}, programul nu compilează. - Scrii acolade în text fără să le dublezi:
std::println("{x}")nu compilează. Pentru o acoladă propriu-zisă scrii{{și}}. - Pui
\nla final din obișnuință și obții un rând gol în plus:printlnadaugă deja rândul nou.
Comenzi înrudite
std::print: Afișează text formatat cu acolade {}, fără rând nou la final (C++23).std::format: Construiește un std::string dintr-un șablon cu acolade {} și valori (C++20).std::cout: Afișează text și valori în consolă, cu operatorul <<.std::setw: Stabilește lățimea minimă a următoarei valori, cu aliniere și caracter de umplere.