C ++: The Container Cadeia
A forma mais comum de uma matriz de C ++ é a cadeia de caracteres terminada em nulo usado para exibir o texto, que mostra claramente as vantagens e desvantagens da matriz. Considere o quão fácil a seguinte tela:
cout lt; lt; "Esta é uma string" -
Mas as coisas azedam rapidamente quando você tenta executar uma operação, mesmo tão simples como concatenar duas dessas cadeias de terminação nula:
char * concatCharString (const char * s1, const char * s2) {int length = strlen (S1) + strlen (s2) + 1-char * s = new char [length] -strcpy (s, s1) -strcat (s , s2) -Retornar s-}
O STL fornece um corda recipiente para lidar com cadeias de exibição. o corda classe fornece uma série de operações (incluindo operadores sobrecarregados) para simplificar a manipulação de cadeias de caracteres. O mesmo concat () a operação pode ser realizada como se segue usando corda objetos:
concatenação de string (string const s1, const string s2) {return S1 + S2}
Na sua essência, um corda ainda é uma matriz. As operações previstas pelo STL torná-lo mais fácil de manipular corda objetos, mas não muito mais rápido. A inserção no meio de um corda ainda envolve mover o conteúdo de matrizes ao redor.
o corda classe é realmente uma instanciação do modelo de classe basic_class com T definido como carbonizar. o wstring classe é um outro nome para basic_class . Essa classe fornece as mesmas manipulações caracteres mostrados aqui para cordas de largura.
A definição C ++ '11 acrescenta u16string e u32string, que se estende os métodos de manipulação de cadeia para UTF-16 e UTF-32 cadeias de caracteres. Todas as comparações entre dois objetos de cadeia são realizadas lexicographically - isto é, qual das duas cordas que aparecem em primeiro lugar no dicionário do idioma atual.