std::string::assign în C++

Înlocuiește tot conținutul șirului cu alt text, cu o bucată din alt text sau cu n caractere.

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

Ce face std::string::assign

s.assign(t) este echivalent cu s = t. Ce aduce în plus sunt variantele: assign(t, poz, n) pune în s doar o bucată din t, iar assign(n, c) îl face din n caractere c.

Spre deosebire de construirea unui șir nou, assign poate refolosi memoria deja alocată a lui s.

Parametri

Parametru Descriere
text Noul conținut.
poz, n Opțional: doar n caractere din text, de la poz.
n, c Caracterul c repetat de n ori.

Ce returnează

Referință la șirul modificat.

Exemple

Exemplul 1: Variantele lui assign

#include <iostream>
#include <string>

int main() {
    std::string s = "text vechi";
    s.assign("Iași");
    std::cout << s << '\n';

    std::string iban = "RO49AAAA1B31007593840000";
    s.assign(iban, 4, 4);   // codul băncii
    std::cout << s << '\n';

    s.assign(10, '=');
    std::cout << s << '\n';
}

Rezultat

Iași
AAAA
==========

Greșeli frecvente

  • Confunzi assign cu append: assign șterge conținutul vechi, append adaugă la el.

Comenzi înrudite

  • std::string::append: Adaugă text la sfârșitul șirului, la fel ca +=, cu variante pentru bucăți și caractere repetate.
  • std::string::substr: Returnează o bucată nouă din șir: n caractere începând de la poziția poz.
  • std::string::swap: Schimbă conținutul a două șiruri între ele, rapid, fără copierea textului.