Encontre o comprimento de uma string em C++
-
Use a função
length
para encontrar o comprimento de uma string em C++ -
Use a função
size
para encontrar o comprimento de uma string em C++ -
Use o loop
while
para encontrar o comprimento de uma string em C++ -
Use a função
std::strlen
para encontrar o comprimento de uma string em C++
![Encontre o comprimento de uma string em C++](/img/Cpp/feature-image---length-of-a-string-in-cpp.webp)
Este artigo explicará vários métodos de como encontrar o comprimento de uma string em C++.
Use a função length
para encontrar o comprimento de uma string em C++
A biblioteca padrão C++ fornece a classe std::basic_string
para aumentar as sequências do tipo char
e implementar uma estrutura genérica para armazenar e manipular tais dados. Embora, a maioria das pessoas esteja mais familiarizada com o tipo std::string
que é ele mesmo um alias de tipo para std::basic_string<char>
. std::string
fornece a função interna length
para recuperar o comprimento da sequência char
armazenada.
#include <cstring>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(int argc, char *argv[]) {
string str1 = "this is random string oiwaoj";
cout << "string: " << str1 << endl;
cout << "length: " << str1.length() << endl;
exit(EXIT_SUCCESS);
}
Resultado:
string: this is random string oiwaoj
length: 28
Use a função size
para encontrar o comprimento de uma string em C++
Outra função embutida incluída na classe std::string
é size
, que se comporta de forma semelhante ao método anterior. Não leva argumentos e retorna o número de elementos char
no objeto string.
#include <cstring>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(int argc, char *argv[]) {
string str1 = "this is random string oiwaoj";
cout << "string: " << str1 << endl;
cout << "length: " << str1.size() << endl;
exit(EXIT_SUCCESS);
}
Resultado:
string: this is random string oiwaoj
length: 28
Use o loop while
para encontrar o comprimento de uma string em C++
Alternativamente, pode-se implementar sua própria função para calcular o comprimento da corda. Nesse caso, utilizamos o loop while
para percorrer a string como uma sequência char
e incrementar o contador em um a cada iteração. Observe que a função recebe char
como argumento e o método c_str
é chamado para recuperar esse ponteiro na função principal. O loop para quando o valor do ponteiro não referenciado é igual a 0
, e a implementação da string terminada em nulo garante isso.
#include <cstring>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
size_t lengthOfString(const char *s) {
size_t size = 0;
while (*s) {
size += 1;
s += 1;
}
return size;
}
int main(int argc, char *argv[]) {
string str1 = "this is random string oiwaoj";
cout << "string: " << str1 << endl;
cout << "length: " << lengthOfString(str1.c_str()) << endl;
exit(EXIT_SUCCESS);
}
Resultado:
string: this is random string oiwaoj
length: 28
Use a função std::strlen
para encontrar o comprimento de uma string em C++
Finalmente, pode-se recorrer à função de biblioteca de string C da velha escola strlen
, que usa um único argumento const char*
como nossa função personalizada - lengthOfString
. Esses dois últimos métodos podem apresentar falhas quando chamados em sequências char
que não terminam com um byte nulo, pois podem acessar a memória fora do intervalo durante o percurso.
#include <cstring>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(int argc, char *argv[]) {
string str1 = "this is random string oiwaoj";
cout << "string: " << str1 << endl;
cout << "length: " << std::strlen(str1.c_str()) << endl;
exit(EXIT_SUCCESS);
}
Resultado:
string: this is random string oiwaoj
length: 28
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook