std::to_string în C++

Transformă un număr în std::string, de exemplu 42 în "42".

Sintaxă
#include <string>
std::string to_string(int valoare);
std::string to_string(double valoare);
// și pentru long, long long, unsigned, float etc.

Ce face std::to_string

std::to_string(42) returnează textul "42". Este felul cel mai simplu de a lipi un număr la un text cu +.

Pentru numere reale, până la C++23 rezultatul avea mereu 6 zecimale (3.140000), ca printf("%f"). Din C++26 va folosi forma cea mai scurtă. Pentru control asupra zecimalelor folosește std::format("{:.2f}", x).

Parametri

Parametru Descriere
valoare Numărul de transformat.

Ce returnează

Un std::string nou.

Exemple

Exemplul 1: Numere lipite într-un mesaj

#include <iostream>
#include <string>

int main() {
    int bucati = 3;
    long long vizualizari = 1'250'000;
    std::string mesaj = "Ai " + std::to_string(bucati) + " produse în coș.";
    std::cout << mesaj << '\n';
    std::cout << "Vizualizări: " + std::to_string(vizualizari) << '\n';
    std::cout << "Lungimea lui -273: " << std::to_string(-273).size() << '\n';
}

Rezultat

Ai 3 produse în coș.
Vizualizări: 1250000
Lungimea lui -273: 4

Exemplul 2: Numerele reale au 6 zecimale

#include <format>
#include <iostream>
#include <string>

int main() {
    double pret = 19.9;
    std::cout << std::to_string(pret) << '\n';
    std::cout << std::to_string(1.0 / 3) << '\n';
    std::cout << std::format("{:.2f}", pret) << " (cu std::format)\n";
}

Rezultat

19.900000
0.333333
19.90 (cu std::format)

Greșeli frecvente

  • Scrii "Total: " + 5 fără to_string: nu primești „Total: 5”, ci un pointer mutat cu 5 poziții în text, care afișează doar „: ”.
  • Folosești to_string pentru prețuri: 19.9 devine 19.900000. Folosește std::format.

Comenzi înrudite

  • std::stoi: Transformă un text în număr întreg (int, long, long long, unsigned long), cu excepții la erori.
  • std::format: Construiește un std::string dintr-un șablon cu acolade {} și valori (C++20).
  • std::to_chars: Scrie un număr ca text într-un tablou de char, foarte rapid, fără alocări și fără excepții.
  • std::ostringstream: Flux de scriere într-un șir: construiește text cu << și manipulatori, apoi îl iei cu str().