std::string::append în C++

Adaugă text la sfârșitul șirului, la fel ca +=, cu variante pentru bucăți și caractere repetate.

Sintaxă
std::string& append(const std::string& text);
std::string& append(const std::string& text, std::size_t poz, std::size_t n);
std::string& append(std::size_t n, char c);

Ce face std::string::append

s.append(t) face același lucru ca s += t: lipește textul la final, modificând șirul. În plus, are variante pe care += nu le are: o bucată dintr-un alt șir (append(t, poz, n)) sau un caracter repetat (append(5, '*')).

Returnează o referință la șir, așa că apelurile se pot înlănțui: s.append("a").append("b").

Parametri

Parametru Descriere
text Textul de adăugat.
poz, n Opțional: se adaugă doar n caractere din text, începând de la poz.
n, c Adaugă caracterul c de n ori.

Ce returnează

Referință la șirul modificat.

Exemple

Exemplul 1: Construirea unei adrese

#include <iostream>
#include <string>

int main() {
    std::string adresa = "Str. Lăpușneanu";
    adresa.append(" nr. 12").append(", Iași");
    adresa += ", România";
    std::cout << adresa << '\n';
}

Rezultat

Str. Lăpușneanu nr. 12, Iași, România

Exemplul 2: Bucăți și caractere repetate

#include <iostream>
#include <string>

int main() {
    std::string cod_postal = "700259";
    std::string judet;
    judet.append(cod_postal, 0, 2);       // primele două cifre
    std::cout << "Prefix: " << judet << '\n';

    std::string bara = "Progres: ";
    bara.append(7, '#').append(3, '.');
    std::cout << bara << '\n';
}

Rezultat

Prefix: 70
Progres: #######...

Greșeli frecvente

  • Construiești un text mare cu s = s + bucata într-o buclă: fiecare pas creează un șir nou. s += bucata sau append adaugă pe loc.

Comenzi înrudite

  • std::string::push_back: push_back adaugă un caracter la final; pop_back șterge ultimul caracter.
  • std::string::insert: Inserează text la o anumită poziție în șir, mutând restul spre dreapta.
  • std::format_to: Scrie textul formatat direct într-un iterator de ieșire, de exemplu la finalul unui șir.
  • std::strcpy: Copiază (strcpy, strncpy) sau lipește (strcat) șiruri C în tablouri de char.