Como dividir a corda em C ++

Como dividir a corda em C ++
Trabalhar com dados de string é uma parte essencial de qualquer linguagem de programação. Às vezes, precisamos dividir os dados da string para fins de programação. A função Split () existe em muitas linguagens de programação para dividir a string em várias partes. Não existe uma função Split () incorporada em C ++ para dividir a corda, mas muitas maneiras múltiplas existem em C ++ para realizar a mesma tarefa, como o uso Obter linha() função, strtok () função, usando encontrar() e apagar() funções, etc. Os usos dessas funções para dividir as cordas em C ++ foram explicadas neste tutorial.

Pré-requisito

Antes de verificar os exemplos deste tutorial, você deve verificar se o compilador G ++ está instalado ou não no sistema. Se você estiver usando o código do Visual Studio, instale as extensões necessárias para compilar o código -fonte C ++ para criar o código executável. Aqui, o aplicativo de código do Visual Studio foi usado para compilar e executar o código C ++.

String Split usando a função getLine ()

A função getLine () é usada para ler caracteres de uma string ou um conteúdo de arquivo até que um delimitador ou separador específico seja encontrado e armazenar cada string parse em outra variável de string. A função continuará a tarefa até que o conteúdo completo da string ou arquivo seja analisado. A sintaxe desta função é dada abaixo.

Sintaxe:

ISTREAM & GETLINE (ISTREAM & IS, String & Str, Char Delim);

Aqui, o primeiro parâmetro, isStream, é o objeto de onde os personagens serão extraídos. O segundo parâmetro é uma variável de string que armazenará o valor extraído. O terceiro parâmetro é usado para definir o delimitador que usará para extrair a string.

Crie um arquivo C ++ com o seguinte código para dividir uma string baseada no delimitador de espaço usando o Obter linha() função. Um valor de string de várias palavras foi atribuído a uma variável e o espaço foi usado como separador. Uma variável vetorial foi declarada para armazenar as palavras extraídas. Em seguida, o loop 'for' usou para imprimir cada valor da matriz vetorial.

// inclui bibliotecas necessárias
#incluir
#incluir
#incluir
#incluir
int main ()

// Defina dados de string que serão divididos
std :: string strdata = "Aprenda a programação C ++";
// Defina dados de contantes que serão trabalhados como delimitador
const char separador = ";
// define a variável de matriz dinâmica de strings
std :: vetor outputArray;
// Construa um fluxo a partir da string
std :: stringStream streamdata (strdata);
/*
Declare a variável string que será usada
Para armazenar dados após divisão
*/
std :: string val;
/*
O loop irá iterar os dados divididos e
Insira os dados na matriz
*/
while (std :: getline (streamdata, val, separador))
outputArray.push_back (val);

// Imprima os dados divididos
std :: cout << "The original string is:" << strData << std::endl;
// Leia a matriz e imprima os dados divididos
std :: cout <<
"Os valores após dividir a string com base no espaço:" <<
std :: endl;
para (Auto & Val: OutputArray)
std :: cout << val << std::endl;

retornar 0;

Saída:

A saída a seguir aparecerá após a execução do código acima.

String dividida usando a função strtok ()

A função strtok () pode ser usada para dividir uma string tokenizando a parte da string com base em um delimitador. Ele retorna um ponteiro para o próximo token se existir; Caso contrário, ele retorna um valor nulo. O corda.h O arquivo de cabeçalho é obrigado a usar esta função. Um loop exigirá a leitura de todos os valores divididos da string. O primeiro argumento contém o valor da string que será analisado, e o segundo argumento contém o delimitador que será usado para gerar o token. A sintaxe desta função é dada abaixo.

Sintaxe:

char * strtok (char * str, const char * delimitadores);

Crie um arquivo C ++ com o seguinte código para dividir uma string usando a função strtok (). Uma variedade de caracteres é definida no código que contém um cólon (':') como o separador. Em seguida, o strtok () A função é chamada com o valor da string e o delimitador para gerar o primeiro token. O 'enquanto'O loop é definido para gerar os outros tokens e os valores de token até que o NULO o valor é encontrado.

// inclui bibliotecas necessárias
#incluir
#incluir
int main ()

// declarar uma variedade de personagens
Char Strarray [] = "Mehrab Hossain: It Professional: [email protected]: +8801726783423 ";
// retorna o primeiro valor do token com base em ':'
char *tokenValue = strtok (Strarray, ":");
// Inicialize a variável contador
int contador = 1;
/*
Itera o loop para imprimir o valor do token
e dividir os dados restantes da string para obter
o próximo valor de token
*/
enquanto (TokenValue != Nulo)

if (contador == 1)
printf ("Nome: %s \ n", tokenValue);
caso contrário, se (contador == 2)
printf ("Ocupação: %s \ n", tokenValue);
caso contrário, se (contador == 3)
printf ("email: %s \ n", tokenValue);
outro
printf ("móvel não. : %s \ n ", tokenValue);
tokenvalue = strtok (null, ":");
contador ++;

retornar 0;

Saída:

A saída a seguir aparecerá após a execução do código acima.

Funções Split String usando find () e EASE ()

A string pode ser dividida em C ++ usando as funções Find () e EASE (). Crie um arquivo C ++ com o seguinte código para verificar os usos de Find () e EASE () funções para dividir um valor de string com base em um delimitador específico. O valor do token é gerado ao encontrar a posição do delimitador usando a função find (), e o valor do token será armazenado após a remoção do delimitador usando a função EASE (). Esta tarefa será repetida até que o conteúdo completo da string seja analisado. Em seguida, os valores da matriz vetorial serão impressos.

// inclui bibliotecas necessárias
#incluir
#incluir
#incluir
int main ()
// Defina a corda
std :: string stringdata = "Bangladesh e Japão, Alemanha e Brasil";
// Defina o separador
std :: string separador = "e";
// Declare a variável vetorial
std :: vetor país;
// declarar variável inteira
int position;
// Declare a variável string
std :: string Outstr, token;
/*
Divida a string usando a função substr ()
e adicionando a palavra dividida no vetor
*/
while ((position = stringdata.encontre (separador)) != std :: string :: npos)
Token = StringData.substr (0, posição);
// Remova o espaço extra da frente da corda dividida
país.push_back (token.Apagar (0, token.find_first_not_of ("")));
StringData.Apagar (0, posição + separador.comprimento());

// Imprima toda a palavra dividida, exceto a última
para (Const Auto & Outstr: Country)
std :: cout << outstr << std::endl;

// imprima a última palavra dividida
std :: cout << stringData.erase(0, stringData.find_first_not_of(" ")) << std::endl;
retornar 0;

Saída:

A saída a seguir aparecerá após a execução do código acima.

Conclusão

Três maneiras diferentes de dividir uma corda em C ++ foram explicadas neste tutorial usando exemplos simples para ajudar os novos usuários do Python a executar a operação dividida facilmente em C++.