C++std :: string


introduzione

Le stringhe sono oggetti che rappresentano sequenze di personaggi. La classe di string standard fornisce un'alternativa semplice, sicura e versatile all'utilizzo di array espliciti di char quando si tratta di testo e altre sequenze di caratteri. La classe di string C ++ fa parte dello spazio dei nomi std ed è stata standardizzata nel 1998.

Sintassi

  • // Dichiarazione di stringa vuota

    std :: string s;

  • // Costruire da const char * (c-string)

    std :: string s ("Hello");

    std :: string s = "Ciao";

  • // Costruire usando il costruttore di copie

    std :: string s1 ("Hello");

    std :: string s2 (s1);

  • // Costruire dalla sottostringa

    std :: string s1 ("Hello");

    std :: string s2 (s1, 0, 4); // Copia 4 caratteri dalla posizione 0 di s1 a s2

  • // Costruire da un buffer di caratteri

    std :: string s1 ("Hello World");
    std :: string s2 (s1, 5); // Copia i primi 5 caratteri di s1 in s2

  • // Costruisci usando fill constructor (solo char)

    std :: string s (5, 'a'); // s contiene aaaaa

  • // Costruisce usando il costruttore di intervalli e l'iteratore

    std :: string s1 ("Hello World");

    std :: string s2 (s1.begin (), s1.begin () + 5); // Copia i primi 5 caratteri di s1 in s2

Osservazioni

Prima di usare std::string , dovresti includere la string intestazione, poiché include funzioni / operatori / sovraccarichi che altre intestazioni (ad esempio iostream ) non includono.


L'uso del costruttore const char * con un nullptr porta a un comportamento non definito.

std::string oops(nullptr);
std::cout << oops << "\n";

Il metodo at lancia uno std::out_of_range un'eccezione se index >= size() .

Il comportamento di operator[] è un po 'più complicato, in tutti i casi ha un comportamento indefinito se index > size() , ma quando index == size() :

C ++ 11
  1. Su una stringa non const, il comportamento non è definito ;
  2. Su una stringa const, viene restituito un riferimento a un carattere con valore CharT() (il carattere null ).
C ++ 11
  1. Viene restituito un riferimento a un carattere con valore CharT() (il carattere null ).
  2. La modifica di questo riferimento è un comportamento non definito .

Dal momento che C ++ 14, invece di usare "foo" , si consiglia di usare "foo"s , poichè s è un suffisso letterale definito dall'utente , che converte il const char* "foo" in std::string "foo" .

Nota: è necessario utilizzare lo spazio dei nomi std::string_literals o std::literals per ottenere i letterali s .

std :: string Esempi correlati