Descrição do problema
Digite uma sequência de caracteres (comprimento <= 40 caracteres) no teclado e termine com o caractere '.'. As funções de edição são:
1 D: excluir um caractere, o comando é: D a onde a é o caractere excluído, por exemplo: D significa excluir o caractere 's', se houver vários 's' na string e excluir o primeiro Apareceu novamente.
2 I: Insere um caractere, o formato do comando é: I a1 a2 onde a1 significa inserir antes do caractere especificado, a2 significa o caractere a ser inserido. Por exemplo: I sd significa inserir o caractere 'd' antes do caractere especificado 's'. Se houver vários 's' na string original, ele será inserido antes do último caractere.
3 R: Para substituir um caractere, o formato do comando é: R a1 a2 em que a1 é o caractere substituído e a2 é o caractere substituído.Se houver vários a1s na string original, todos deverão ser substituídos.
Durante o processo de edição, se o caractere alterado não existir, uma mensagem será exibida.
1 D: excluir um caractere, o comando é: D a onde a é o caractere excluído, por exemplo: D significa excluir o caractere 's', se houver vários 's' na string e excluir o primeiro Apareceu novamente.
2 I: Insere um caractere, o formato do comando é: I a1 a2 onde a1 significa inserir antes do caractere especificado, a2 significa o caractere a ser inserido. Por exemplo: I sd significa inserir o caractere 'd' antes do caractere especificado 's'. Se houver vários 's' na string original, ele será inserido antes do último caractere.
3 R: Para substituir um caractere, o formato do comando é: R a1 a2 em que a1 é o caractere substituído e a2 é o caractere substituído.Se houver vários a1s na string original, todos deverão ser substituídos.
Durante o processo de edição, se o caractere alterado não existir, uma mensagem será exibida.
Formato de entrada
Digite um total de duas linhas, a primeira linha é a string original (termina com um '.') E a segunda linha é o comando (para o método de entrada, consulte "Descrição do Problema").
Formato de saída
É emitido um total de uma linha e uma mensagem de aviso indicando que o caractere especificado não existe é emitida para a cadeia de caracteres modificada.
Entrada de amostra
Isto é um livro.
D s
D s
Saída de amostra
Thi é um livro.
Explicação de entrada e saída de amostra
O comando é excluir s, os primeiros s que aparecem no caractere estão em This e o resultado é obtido.
O título parece ter um problema: " No processo de edição, se um caractere que foi alterado não existir, será exibida uma mensagem rápida " Parece inútil, supondo que todos os caracteres alterados existam.
Operações básicas de string são simuladas passo a passo.
Outros caracteres, como novas linhas que são lidas por char, são ofuscados, e eu estou acostumado a lê-los com string.
Referência de https://blog.csdn.net/vivenn/article/details/79615847
1 #include <bits / stdc ++. H> 2 usando o namespace std; 3 int main () { 4 string s; 5 getline (cin, s); 6 cordas a, b, c; 7 cin >> a; 8 int len = s.length (); 9 int t; 10 if (a [ 0 ] == ' D ' ) { 11 cin >> b; 12 t = 0 ; 13 para ( inti = 0 ; eu <len; i ++ ) { 14 if (s [i] == b [ 0 ]) { 15 break ; 16 } 17 t ++ ; 18 } 19 para ( int i = t + 1 ; i <len; i ++ ) { 20 s [i - 1 ] = s [i]; 21 } 22 len-- ; 23 para ( int i = 0 ; i <len; i ++ ) { 24 cout << s [i]; 25 } 26 cout << endl; 27 } senão se (a [ 0 ] == ' I ' ) { 28 cin >> b >> c; 29 t = 0 ; 30 para ( int i = 0 ; i <len; i ++ ) { 31 if (s [i] == b [ 0 ]) { 32 t = i; 33 } 34 } 35 for ( int i = len - 1 ; i> = t; i-- ) { 36 s [i + 1 ] = s [i]; 37 } 38 len ++ ; 39 s [t] = c [ 0 ]; 40 para ( int i = 0 ; i <= len; i ++ ) { 41 cout << s [i]; 42 } 43 cout << endl; 44 } senão se (a [ 0 ] == ' R' ) { 45 cin >> b >> c; 46 t = 0 ; 47 para ( int i = 0 ; i <len; i ++ ) { 48 if (s [i] == b [ 0 ]) { 49 s [i] = c [ 0 ]; 50 } 51 } 52 para ( int i = 0 ; i <len; i ++ ) { 53 cout << s [i]; 54 } 55 cout <<endl; 56 } 57 retorno 0 ; 58 } 59
Você também pode usar as funções da biblioteca C ++, mas essas funções têm muitos parâmetros e são fáceis de confundir.Eu ainda estou acostumado à simulação manual.
Referência de https://blog.csdn.net/Z_122113/article/details/104353544
1 #include <bits / stdc ++. H> 2 usando o namespace std; Str de 3 cordas ; Edição de 4 caracteres ; 5 caracteres a1, a2; 6 int main () { 7 getline (cin, str); 8 cin >> editar; 9 str = str.substr ( 0 , str.find_first_of ( " . " ) + 1 ); 10 string tempstr = str; 11 switch (editar) 12 { 13 case 'D ' : cin >> a1; str = str.erase (str.find_first_of (a1), 1 ); quebrar ; 14 caso ' I ' : cin >> a1 >> a2; str = str.inserir (str.find_last_of (a1), 1 , a2); quebrar ; 15 caso ' R ' : cin >> a1 >> a2; substitua (str.begin (), str.end (), a1, a2); quebrar ; 16 padrão : 17 intervalos ; 18 } 19 if (str == tempstr) 20 cout << " não existe "21 else cout << str; 22 retorno 0 ; 23 }