Timp de peste trei decenii, dezvoltatorii C++ au fost prinși între două extreme nesatisfăcătoare pentru afișarea textului în consolă: printf (rapid, dar nesigur ca tipuri și vulnerabil la format-string attacks) și std::cout (sigur ca tipuri, dar extrem de lent din cauza overhead-ului iostream-urilor și greoi de formatat). Introdusă în C++23 prin header-ul <print>, perechea de funcții std::print și std::println combină sintaxa elegantă a lui Python/Rust cu verificarea tipurilor la compilare și viteza nativă directă către descriptorii de fișiere de sistem.
#include <print>
#include <string>
#include <vector>
int main() {
std::string utilizator = "Alexandru";
double rataSucces = 98.7564;
std::vector<int> valori = {10, 20, 30, 40};
// 1. std::println adaugă automat caracterul newline (
) la final:
std::println("Salutare, {}!", utilizator);
// 2. Formatare numerică avansată (rotunjire la 2 zecimale, aliniere):
std::println("Rata de succes: {:>8.2f}%", rataSucces);
// 3. Afișarea directă a containerelor întregi fără bucle manuale:
std::println("Valorile din vector: {}", valori);
// 4. Afișare pe stream-ul de eroare standard (stderr):
std::println(stderr, "Eroare critica: resursa indisponibila!");
return 0;
}
De ce este std::print revoluționar?
- Verificare la timpul compilării (Compile-Time Checked): Dacă șablonul conține
{}dar nu transmiteți parametrul corespunzător, compilatorul generează o eroare de compilare imediată, prevenind erorile de runtime. - Performanță extremă: Scrie direct în descriptorii de fișiere din sistemul de operare (cum ar fi
write()pe Linux sauWriteConsoleW()pe Windows cu suport complet Unicode UTF-8), ocolind sincronizarea lentă dinstd::ios_base::sync_with_stdio.