Leerzeichen in Zeichenketten ersetzten



  • Moin Moin schöne grüße von der Noob Front.

    Also folgendes Problem
    ich möchte in einer Zeichenkette ein Leerzeichen durch nichts ersetzten da wenn man eins eingibt alles bis zum leerzeichen ersetzt wird. SO jetzt möchte ich gerne nen Befehl wissen wmoit man das ändern kann aber bitte NooB Gerecht bis dann



  • Äh sorry, aber was willst Du machen? 🙄

    Erklär bitte nochmal, zumindest ich habe kein Wort verstanden. 🙂



  • So noachmal
    Also,ich möchte in einer Zeichenkette ein Leerzeichen durch nichts ersetzen. Weil wenn ein satz eingegeben wird in dem ein leerzeichen kommt nur bis zum ersten leerzeichen gespeichert wird und der REst weg fällt also besser? 😃 😃 😃 😃 😃



  • 🙄 Nein, gib ein Codebeispiel.

    (UU könnte Dich der FAQ-Beitrag zu getline Vs. cin interessieren, aber vielleicht meinst Du ja auch etwas ganz anderes, keine Ahnung, sorry...)



  • string foo = "Hallo Welt";
    
    foo.replace(foo.begin(), foo.end(), ' ');
    


  • Hallo,

    mit Replace wird das wohl so nix. Der Code lässt sich so erstmal gar nicht kompilieren:

    string foo = "Hallo Welt";
    foo.replace(foo.begin(), foo.end(), " "); // Wenn dann so...
    

    Dann würde das den kompletten String "Hello World" durch ein Leerzeichen ersetzen, was wohl nicht gewollt ist. Ich würde das eher so machen:

    #include <string>
    #include <iostream>
    using namespace std;
    
    int main()
    {
       string foo = "Test 1 2 3 4 5"; 
       string::size_type pos;
    
       while((pos = foo.find(" ",0)) != string::npos)
          foo.replace(pos,1, ""); 
    
       cout << foo << endl;
       return 0;
    }
    


  • std::string str("abcefgdgd aa  a");
    std::replace(str.begin(),str.end(),'a',' ');
    
    //oder
    std::remove(str.begin(),str.end(),' ');
    

    🙄



  • Shlo schrieb:

    std::remove(str.begin(),str.end(),' ');
    

    🙄

    Wenn dann

    str.erase(remove(str.begin(),str.end(),' '), str.end());
    

    Sonst hast du den Rest noch am Ende stehen, denn remove löscht nichts!


Anmelden zum Antworten