A biblioteca C + + string tem várias funções úteis para manipulação de strings, mas nenhuma pesquisa geral e substituir. Embora exista uma grande quantidade de informações sobre algoritmos otimizados para a implementação de substituição de texto arbitrário , muitos algoritmos envolvem complexas estruturas de dados e técnicas difíceis de seguir , como a aritmética de ponteiro . Para a maioria dos programas , procurar e substituir não é um gargalo de desempenho , por isso faz mais sentido usar um algoritmo simples , facilmente compreensível. Isto é possível , tirando partido de algumas das funções de cadeia existentes para lidar com a manipulação de baixo nível . Instruções
1
Escreva o esboço de sua função de substituição de string:
replaceSubstring string ( fonte corda, jogo da corda, corda substituir) {string a = ""; voltarão ; }
2
Adicione um loop que encontra todos os jogos substring na string. Os lastpos variável será útil quando você começar a adicionar o código para construir a nova cadeia :
size_t pos = 0; //Iniciar a pesquisa nos primeiros charactersize_t lastpos = 0 ; while (( pos = source.find ( ! jogo , pos )) = string :: npos ) //loop até que nenhuma correspondência for encontrada { pos = pos + match.lengh ( ) //Iniciar a pesquisa para o próximo jogo no final deste matchlastpos = pos ;}
3
Construir a cadeia de saída como os jogos são encontrados:
size_t pos = 0; //começar a procurar nos primeiros charactersize_t lastpos = 0; while (( pos = ! source.find (jogo , pos )) = string :: npos ) //loop até que nenhuma correspondência for encontrada { output + = source.substr ( lastpos , pos - lastpos ) //Adicionar todos os personagens que foram ignorados overoutput + = substituir , pos = pos + match.lengh ( ) //Iniciar a pesquisa para o próximo jogo no final deste matchlastpos = pos ;} output + = source.substr ( lastpos ) //Adicione o restante da cadeia de origem