Teil Zeichenkette ersetzen?



  • Hallo ich bräuchte Hilfe mit Zeichenketten. ich versuche dass wenn man z.B. Sommerferien eingibt als erste Zeichenkette und als zweite Zeichenkette z.B. Winter, dass er mir Somm ** f ***** ausgibt, also dass er nach den Buchstaben von der 2.ten in der ersten sucht und mit "*" ersetzt:

    Das habe ich bisher:
    #include <iostream>
    #include <string>
    using namespace std;

    int main() {

    string text;
    string chars;
    char stern = '*';
    int j;
    
    cout << "1.Zeichenkette: " << endl;
    cin >> text;
    cout << " " << endl;
    cout << "2.Zeichenkette: " << endl;
    cin >> chars ;
    
    text.find(chars, 0);
    text.substr(0, 50);
    cout << text.replace(text.find(chars, 0),5, "*") << endl;
    return 0;
    

    }

    Ich würde auch gerne wissen wie man Wörter innerhalb einer Ketten tauschen kann also z.B. Flasche ohne Apfel wird zu: ohne Apfel, Flasche



  • for(int i = 0; i < text.size(); ++i)
       for(int j = 0; j < chars.size(); ++j)
          if(text[i] == chars[j])
            text[i] = '*';
    


  • und wo soll ich das einsetzten bei meinen Versuchen kommt nur fehler?(Die Klammern habe ich nicht vergessen mit reinzubringen)



  • Die Vorgehensweise ist ungeschickt, weil nach dem match die Schleife abgebrochen werden kann, besser so:
    Vollständiges Beispiel:

    #include<string>
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
       string text{"Sommerferien"};
       string chars{"Winter"};
    
       for(int i = 0; i < text.size(); ++i)
          if(chars.find_first_of(text[i]) != string::npos)
             text[i] = '*';
    
       cout << text;
    }
    


  • vielen dank😁 😁


Log in to reply