C++std :: string


Introducción

Las cadenas son objetos que representan secuencias de caracteres. El estándar string clase proporciona una alternativa sencilla, segura y versátil para la utilización de matrices explícitas de char s cuando se trata de texto y otras secuencias de caracteres. La clase de string C ++ es parte del std nombres estándar y se estandarizó en 1998.

Sintaxis

  • // declaración de cadena vacía

    std :: string s;

  • // Construyendo desde const char * (c-string)

    std :: string s ("Hello");

    std :: string s = "Hello";

  • // Construyendo usando el constructor de copia

    std :: string s1 ("Hello");

    std :: string s2 (s1);

  • // Construyendo a partir de subcadenas

    std :: string s1 ("Hello");

    std :: string s2 (s1, 0, 4); // Copia 4 caracteres de la posición 0 de s1 en s2

  • // Construyendo desde un buffer de personajes.

    std :: string s1 ("Hello World");
    std :: string s2 (s1, 5); // Copia los primeros 5 caracteres de s1 en s2

  • // Construir usando constructor de relleno (solo char)

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

  • // Construir usando el constructor de rango e iterador

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

    std :: string s2 (s1.begin (), s1.begin () + 5); // Copia los primeros 5 caracteres de s1 en s2

Observaciones

Antes de usar std::string , debe incluir la string del encabezado, ya que incluye funciones / operadores / sobrecargas que otros encabezados (por ejemplo, iostream ) no incluyen.


El uso de const char * constructor con un nullptr conduce a un comportamiento indefinido.

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

El método at lanza un std::out_of_range excepción si index >= size() .

El comportamiento del operator[] es un poco más complicado, en todos los casos tiene un comportamiento indefinido si index > size() , pero cuando index == size() :

C ++ 11
  1. En una cadena no constante, el comportamiento no está definido ;
  2. En una cadena constante, se devuelve una referencia a un carácter con valor CharT() (el carácter nulo ).
C ++ 11
  1. Se CharT() una referencia a un carácter con valor CharT() (el carácter nulo ).
  2. Modificar esta referencia es un comportamiento indefinido .

Como C ++ 14, en lugar de usar "foo" , se recomienda usar "foo"s , ya que s es un sufijo literal definido por el usuario , que convierte el const char* "foo" en std::string "foo" .

Nota: tienes que usar el espacio de nombres std::string_literals o std::literals std::string_literals para obtener el s literal.

std :: string Ejemplos relacionados