Normalmente, um programador pode recuperar o comprimento de uma frase (ou string) em qualquer programa C + + por chamados método da string " length () " . No entanto, como cordas implementadas em C + + não estavam sempre disponíveis , e os programadores não têm acesso a métodos prontos , como o comprimento (). Contando o comprimento de uma string sem usar esse construído em método envolve a cadeia entendimento , arrays de caracteres c -estilo, e como fazer uma iteração sobre eles. C + + e C Cordas Cordas
Em C + + , o " string" built-in tipo de dados representa sentenças , frases ou palavras. No entanto, o tipo de dados string , na verdade, representa o que os programadores chamam de cadeia " c- estilo " . No idioma original C , os programadores armazenados frases como coleções ( ou matrizes ) de caracteres. Assim, enquanto em C + +, uma declaração de variável frase parece:
string str = " Olá ";
em C, a mesma declaração se parece com:
de char str [50 ] = " Olá ";
Onde " str " representa uma matriz de 50 caracteres. Além disso, como cordas de estilo C são simplesmente matrizes , todos eles terminam com um caractere de terminação nulo ("\\ 0") que significa o fim da string.
O " c_str () " Método
a coisa interessante sobre strings em C + + é que eles são uma classe, e como uma classe conter métodos para fazer um trabalho na cadeia . Um desses métodos ( " c_str ()" ) retorna uma string estilo C que representa a seqüência de C + + . Isso significa que o valor de retorno vai acabar como um array de caracteres contendo os caracteres da string , incluindo o caractere de terminação nula .
Copiando o C Cadeia
para realmente fazer alguma coisa com a seqüência C- estilo recuperado de c_str (), o programador precisa colocá-lo em uma matriz de caracteres . Isto exige que o método " strcpy " , que irá copiar série um personagem para outro :
# include
# include
# include < ; iostream >
using namespace std;
string str = " A String ";
de char str2 [50] ;
strcpy ( str2 , str . c_str ())
Agora , a representação de string C- estilo de " str " vai copiar para a matriz de caracteres " str2 " (incluindo nulo caracteres).
Contando o personagens
Agora que o programador tem uma cópia conjunto da cadeia, incluindo o caractere nulo que irá informar o programador quando a corda acaba , torna-se uma questão de personagens simplesmente contando até que o programa atinge o nulo caráter :
int i = 0;
while (! str2 [i] = "\\ 0") {
i + +
}
cout << i + 1;
a ", enquanto " verificações de loop cada personagem desde o início ( a posição do caractere 0 ) até atingir o caractere nulo . Em seguida , o programa imprime i +1 ( porque o índice começa em 0 , ea posição do caractere nulo não é contado ) que resulta em um valor de retorno de 8.