De hecho, es el problema de hacer coincidir las subcadenas. Puede usar string :: find () y string :: erase () en STL, y ha escrito el suyo.
#include <iostream> #include <stdio.h> #include <string> usando el espacio de nombres std; cuerda s; string ss; bool cmp (int index) { int i = 0; para (; i <ss.size () && index <s.size (); index ++, i ++) { if (s [index]! = ss [i]) return false; } if (i == ss.size ()) devuelve verdadero; de lo contrario devuelve falso; } string charge () { string str = ""; for (int i = 0; i <s.size ();) { if (s [i] == ss [0] && cmp (i)) { i = i + ss.size (); } else { str + = s [i]; i ++; } } return str; int main () { cin >> s >> ss; cout << charge () << endl; }
Si usa la función find y la función earse en la cadena, se puede resolver más rápido;
Sin embargo, debe tenerse en cuenta que la función find () devuelve string :: nops cuando no puede encontrarlo. No puede simplemente usar el criterio booleano, esto debe tenerse en cuenta;
#include <iostream> #include <string> usando el espacio de nombres estándar; cadena s1, s2; int main () { cin >> s1 >> s2; while (s1.find (s2,0)! = string :: npos) { int index = s1.find (s2); cout << index << endl; s1.erase (index, s2.size ()); } cout << s1 << endl; }