Como dividir string em C ++

How Split String 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 há função split () embutida em C ++ para dividir string, mas existem muitas maneiras múltiplas em C ++ de fazer a mesma tarefa, como usar Obter linha() função, strtok () função, usando achar() e apagar() funções, etc. Os usos dessas funções para dividir strings em C ++ foram explicados neste tutorial.

Pré-requisito

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







Divida a string usando a função getline ()

A função getline () é usada para ler caracteres de uma string ou de um conteúdo de arquivo até que um determinado delimitador ou separador seja encontrado e armazenar cada string de análise em outra variável de string. A função continuará a tarefa até que todo o conteúdo da string ou arquivo seja analisado. A sintaxe desta função é fornecida a seguir.



Sintaxe:



istreamEObter linha(istreamEé, stringEstr,Caracteresdelim);

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 será usado para extrair a string.





Crie um arquivo C ++ com o código a seguir para dividir uma string com base 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 de vetor foi declarada para armazenar as palavras extraídas. Em seguida, o loop ‘for’ é usado para imprimir cada valor da matriz vetorial.

// Incluir bibliotecas necessárias
#incluir
#incluir
#incluir
#incluir

inta Principal()
{
// Defina os dados da string que serão divididos
horas::fragmentostrData= 'Aprenda Programação C ++';
// Definir dados constantes que serão trabalhados como delimitador
const Caracteresseparador= '';
// Defina a variável de matriz dinâmica de strings
horas::vetoroutputArray;
// Construir um stream a partir da string
horas::stringstreamstreamData(strData);
/ *
Declare a variável de string que será usada
para armazenar dados após a divisão
* /

horas::fragmentohoras;
/ *
O loop irá iterar os dados divididos e
insira os dados no array
* /

enquanto (horas::Obter linha(streamData, val, separator)) {
outputArray.retrocesso(horas);
}
// Imprime os dados divididos
horas::custo << 'A string original é:' <<strData<<horas::endl;
// Leia a matriz e imprima os dados divididos
horas::custo << ' nOs valores depois de dividir a string com base no espaço: ' <<horas::endl;
para (auto Ehoras:outputArray) {
horas::custo <<horas<<horas::endl;
}
Retorna 0;
}

Saída:



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

Divida a string 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 NULL. o string.h é necessário um arquivo de cabeçalho para 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 é fornecida a seguir.

Sintaxe:

Caracteres * Strtok ( Caracteres *str,const Caracteres *delimitadores);

Crie um arquivo C ++ com o código a seguir para dividir uma string usando a função strtok (). Uma matriz de caracteres é definida no código contendo dois pontos (‘:’) como separador. A seguir, o strtok () A função é chamada com o valor da string e o delimitador para gerar o primeiro token. O ' enquanto 'Loop é definido para gerar os outros tokens e os valores de token até o NULO valor é encontrado.

// Incluir bibliotecas necessárias
#incluir
#incluir

inta Principal()
{
// Declara uma matriz de caracteres
CaracteresstrArray[] = 'Mehrab Hossain: Profissional de TI: [email protegido]: +8801726783423';
// Retorna o primeiro valor de token com base em ':'
Caracteres *tokenValue= Strtok(strArray,':');
// Inicializa a variável do contador
intcontador= 1;
/ *
Repita 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)
{
E se(contador== 1)
printf('Nome:% s n', tokenValue);
outro E se(contador== 2)
printf('Ocupação:% s n', tokenValue);
outro E se(contador== 3)
printf('Email:% s n', tokenValue);
outro
printf('Número do celular:% s n', tokenValue);
tokenValue= Strtok(NULO,':');
contador++;
}
Retorna 0;
}

Saída:

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

Divida a string usando as funções find () e erase ()

A string pode ser dividida em C ++ usando as funções find () e erase (). Crie um arquivo C ++ com o código a seguir para verificar os usos das funções find () e erase () para dividir um valor de string com base em um delimitador específico. O valor do token é gerado encontrando 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 erase (). Esta tarefa será repetida até que todo o conteúdo da string seja analisado. A seguir, os valores da matriz vetorial serão impressos.

// Incluir bibliotecas necessárias
#incluir
#incluir
#incluir

inta Principal(){
// Defina a string
horas::fragmentostringData= 'Bangladesh e Japão e Alemanha e Brasil';
// Defina o separador
horas::fragmentoseparador= 'e';
// Declara a variável vetorial
horas::vetorpaís{};
// Declare a variável inteira
intposição;
// Declara variável de string
horas::fragmentooutstr, token;

/ *
Divida a string usando a função substr ()
e adicionar a palavra dividida ao vetor
* /

enquanto ((posição=stringData.achar(separador)) !=horas::fragmento::npos) {
símbolo=stringData.substr(0posição);
// Remova o espaço extra da frente da corda dividida
país.retrocesso(símbolo.apagar(0, símbolo.find_first_not_of('')));
stringData.apagar(0posição+separador.comprimento());
}
// Imprime todas as palavras divididas exceto a última
para (const auto Eoutstr:país) {
horas::custo <<outstr<<horas::endl;
}
// Imprime a última palavra dividida
horas::custo <<stringData.apagar(0, stringData.find_first_not_of('')) <<horas::endl;
Retorna 0;
}

Saída:

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

Conclusão

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