Remova os espaços da string c ++

Remova os espaços da string c ++
Nossos dados podem conter espaços adicionais de tempos em tempos, o que pode causar problemas durante a análise de dados. Quando a necessidade surge, sabendo como remover espaços adicionais, como guias, feeds de linha e retornos de transporte, são úteis. Aqui estão várias explicações sobre por que os espaços devem ser removidos das cordas:
  • Espaços desnecessários no início, final e até no centro
  • Tentando descobrir quantos personagens existem em uma string
  • Tentando organizar um conjunto de cordas
  • Quando duas cordas são comparadas
  • Adicionando um URL a um site

Se nosso código C ++ encontrar espaços ao executar qualquer uma dessas operações anteriores, receberemos resultados inesperados, como contagens de personagens incorretas, listas classificadas incorretamente, comparações imprecisas de string e URLs quebrados. Por padrão, estes são considerados personagens de espaço em branco, eu.e., "\ N", "\ t", "", "\ v", "\ r", "f".

Às vezes é importante remover o espaço das cordas da programação para evitar resultados inesperados. Aprenda a remover espaços das cordas e como lidar com espaços adicionais com este artigo.

Exemplo 1: Usando o método :: ISSPACE para remover os espaços de branco da string em c++

Para extrair caracteres de espaço em branco de STD :: Strings, a abordagem comum é utilizar o método std :: remover se. O algoritmo STD :: Remone_if não elimina efetivamente os caracteres da string, mas move todos os personagens com os espaços não-brancos para a frente e produz um iterador referente ao fim. O método std :: remove_if requer um predicado que decide quais personagens apagarem da string.

O método ISSPACE () é o que é especificado no cabeçalho do CCTYPE e procura caracteres de espaço em branco categorizados pelo C Partreng Locale.

O exemplo a seguir começa a partir da função principal. A declaração de string da classe Standard String é definida no método principal. A variável da string é definida como "str" ​​e é inicializada com a string que contém os caracteres de espaço em branco. Para remover os espaços de branco da string, usamos o procedimento de apagamento normal.

Usamos o método std :: remove_if. No método STD :: Remone_if, passamos a função ":: ISSPACE" em uma busca por um personagem de espaço em branco em uma determinada string. A string após a remoção dos espaços em branco será impressa na tela seguinte:

#incluir
#incluir
#incluir
#incluir
int main ()

std :: string str = "c \ n \ nplusplus";
str.Apagar (std :: remove_if (str.BEGIN (), STR.end (), :: ISSPACE), STR.fim());
std :: cout<< "String:"<< str<<"\n";
retornar 0;

Como você pode ver, nenhum caractere em branco é encontrado na seguinte sequência exibida:

Exemplo 2: Usando o método STD :: ISSPACE para remover os espaços de branco da string em C++

Neste exemplo, usamos o método de ligação padrão para remover o espaço em branco da string chamando a função STD :: ISSPACE. Em vez de depender da classificação C Locale de caracteres de espaço em branco, podemos usar o STD :: ISSPACE representado no local do cabeçalho, onde o aspecto CTYPE do local especificado classifica os caracteres do espaço em branco.

Vincular uma função aos espaços reservados permite alterar a posição e a quantidade de valores que a função utilizará, alterando a função com base no resultado desejado.

A string é definida como "str_n" no principal e é inicializada com a palavra string com caracteres de espaço em branco entre eles. Aqui, invocamos o método de apagamento para a string "str_n", onde duas funções são usadas std :: remove_if e o std :: bind. Observe que usamos STD :: ISSPACE na função de ligação para encontrar espaços de branco na string; Em seguida, o método de apagamento removerá o espaço em branco da string e retornará uma nova string de resultado.

#incluir
#incluir
#incluir
#incluir
#incluir
int main ()

std :: string str_n = "branco \ n \ nspaces";
str_n.Apague (std :: remove_if (str_n.começar(),
str_n.fim(),
std :: bind (std :: isspace,
std :: placeholders :: _ 1,
std :: Locale :: Classic ()
)),
str_n.fim());
std :: cout<< "String:"<retornar 0;

Ao compilar o programa anterior, o shell exibe os caracteres que não são do WhitaSpace.

Exemplo 3: Usando o método unário para remover os espaços de branco da string em c++

Em vez de usar :: ISSPACE ou STD :: ISSPACE, podemos criar uma condição personalizada que retorne true se o personagem for um personagem de espaço em branco ou então false. Criamos nosso método unário para remover os caracteres de espaço em branco da string.

Criamos um método unário "MyFunction" do tipo de dados bool. A função passou com o argumento da variável de char não assinada "mychar". Dentro da função, temos uma condição de retorno que retorna o caractere de espaço em branco especificado, se encontrado na string.

Em seguida, temos a principal função em que a string é gerada como "mystring" e contém os caracteres da string com caracteres de espaço em branco. O método de apagamento é usado a seguir na declaração de string, onde remove_if e função "myfunction" é chamado de apagar os caracteres de espaço em branco.

#incluir
#incluir
#incluir
bool myfunction (char não assinado)
return (mychar == "|| mychar == '\ n' || mychar == '\ r' ||
Mychar == '\ t' || Mychar == '\ v' || Mychar == '\ f');

int main ()

std :: string myString = "mc \ n \ ndonald";
Mystring.Apagar (std :: remove_if (mystring.BEGIN (), MyString.end (), myfunction), mystring.fim());
std :: cout<< "String:" <retornar 0;

A string resultante possui todos os caracteres que não são do WhitaSpace mostrados na tela do shell a seguir:

Exemplo 5: Usando o método regex para remover os espaços de branco da string em c++

O método regex substitui () substitui um padrão de expressão regular por uma string contendo caracteres de espaço em branco. Vamos discutir isso com o exemplo de demonstração.

O programa C ++ inclui um arquivo regex na seção de cabeçalho para acessar a função regex_replace no programa. O INT principal é definido, que possui uma representação integral de string com os caracteres de espaço em branco em uma variável de string "stringis". Em seguida, chamamos a função regex em uma representação regex presa e passamos a variável de string "stringis" com o operador "+". A função regex_replace é chamada sobre a string variável "stringis" para apagar os espaços de branco ou o espaço em branco da string fornecida:

#incluir
#incluir
#incluir
int main ()

std :: string stringis = "1 \ n \ n2 \ n \ n3 \ n \ n4 \ n \ n5";
std :: regex regx ("\\ stringis+");
Stringis = std :: regex_replace (stringis, regx, "");
std :: cout<retornar 0;

O regex substitui remove os caracteres de espaço em branco da string inteira, que é impressa no shell de comando do Ubuntu.

Conclusão

Assim, podemos remover os caracteres de espaço em branco da string em C ++ através de vários métodos discutidos neste artigo. Temos todas as demonstrações desses exemplos com o resultado resultante do programa. Você tem um número suficiente de métodos para substituir ou remover espaços brancos de strings C ++. Escolha quaisquer métodos que o atraem, além de ser apropriado para a situação.