Como dividir as cordas usando delimitador em C ++

Como dividir as cordas usando delimitador em C ++
A divisão de uma string usando um delimitador é uma operação comum na programação, principalmente ao trabalhar com dados de texto. A delimitador é um personagem ou sequência de caracteres usados ​​para separar uma seção de uma string de outra. Quando um texto é separado em substringas menores usando um delimitador, O delimitador ou separador é predeterminado. Muitas tarefas de programação, como análise de dados de entrada, tokenização de texto e processamento de strings, usam esta técnica. Existem vários String-spliting Métodos disponíveis em C ++, cada um com prós e contras.

Neste artigo, exploraremos algumas das maneiras comuns para Divida uma corda usando um delimitador em c++.

Strings divididos usando delimitador em C++

Em C ++, existem várias abordagens para quebrar uma string usando um delimitador, incluindo:

  • Usando as funções find () e substr ()
  • Usando a função strtok ()
  • Usando a classe StringStream

1: Usando as funções find () e substr ()

Uma string pode ser dividida usando as funções C ++ encontrar() e substr (). A primeira instância de uma substring está localizada usando o encontrar() método. Se não houver mais ocorrências, a parte restante da corda será devolvida após ser colocada no vetor. A substring que começa no início do texto e terminando no delimitador pode ser extraída usando o substr () função. Podemos continuar fazendo isso até que todas as substâncias sejam obtidas.

Aqui está um exemplo C ++ de como Divida uma corda usando um delimitador:

#incluir
#incluir
int main ()
std :: string str = "maçã, banana, cereja";
std :: string delimiter = ",";
size_t pos = 0;
std :: string token;
enquanto ((pos = str.encontre (delimitador)) != std :: string :: npos)
Token = str.substr (0, pos);
std :: cout << token << std::endl;
str.Apagar (0, POS + Delimitador.comprimento());

std :: cout << str << std::endl;
retornar 0;

No exemplo acima, uma string chamada "STR" e um delimitador nomeado “Delimitador” são definidos. As substringas de "STR" são então extraídos usando um loop de tempo. A localização do delimitador é devolvida pelo encontrar() método, ou std :: string :: npos Se não puder ser localizado. A substring desde o início de "STR" até o delimitador é extraído usando “Substr ()” neste local, e então é impresso no console. A substring extraída e o delimitador são então retirados de "STR" usando o "apagar()" função. Uma vez que não há mais delimitadores em "STR", Repetimos esta operação. Depois, produzimos a última substring "cereja" para o console.

Saída

2: Usando a função strtok ()

O strtok () A função é outra função em C ++ que pode efetivamente dividir as strings usando um delimitador em qualquer programa C ++. Ele retira duas entradas; a string a ser dividida e o personagem delimitador. Aqui está uma implementação de strtok () função em c ++:

#incluir
#incluir
usando namespace std;
int main ()

Char Str [100];
cout << " Enter a string: " <CIN.getLine (str, 100);
char *ptr;
ptr = strtok (str, ",");
cout << " \n Splitting the string: " << endl;
while (ptr != Nulo)

cout << ptr << endl;
ptr = strtok (null, ",");

retornar 0;

O strtok () A função é usada no código acima para quebrar uma sequência de entrada fornecida pelo usuário em tokens, usando uma vírgula e um espaço como delimitadores. Em seguida, ele publica cada token no console em uma linha separada. Isso é realizado armazenando a sequência de entrada em uma matriz de char, iterando os tokens com um ponteiro de char e depois dividindo a corda repetidamente até que todos os tokens tenham sido exibidos.

Saída

3: Usando a classe StringStream

Usando o Classe é outra técnica para dividir uma corda em C++. É possível inserir e sair dados formatados, incluindo strings, usando esta classe. Uma string que está sendo manipulada como um fluxo pode ter substâncias extraídas dele usando o Obter linha() método. O Obter linha() Método extrairá a substring até o delimitador se fornecermos o delimitador como um parâmetro.

Aqui está uma ilustração de como Divida uma corda em C++ usando o StringStream () função.

#incluir
#incluir
#incluir
#incluir
int main ()
std :: string input_string = "Apple, banana, cereja";
std :: vetor tokens;
std :: stringStream ss (input_string);
std :: string token;
while (std :: getLine (ss, token, ','))
Tokens.push_back (token);

para (Auto T: Tokens)
std :: cout << t << std::endl;

retornar 0;

No código acima, um caractere delimitador é usado para dividir uma sequência de entrada em tokens usando . Antes de extrair cada token do Usando o delimitador, o programa inicializa um Objeto com a sequência de entrada. Um vetor de cordas é então expandido por cada token. O programa então percorre o vetor, imprimindo cada token para o console no final.

Saída

Conclusão

A divisão de uma corda usando um delimitador é uma abordagem eficaz no C ++ e existem várias funções internas no C ++ que possibilitam a divisão de strings. Essas funções incluem encontre (), substr (), strtok () e Fream aula. Os desenvolvedores devem considerar os requisitos específicos de sua aplicação e escolher a função que melhor funciona para eles.