string Inkrementieren



  • Hallo,

    wie der titel schon sagt, will ich einen string inkrementieren. jetzt meine frage, ob das in c++ nur über strinstreams geht.

    schöne grüße

    gucky



  • Was verstehst du unter string inkrementieren? Ist std::string gemeint?



  • Meinst du string anhand eines Tokens trennen?



  • 😕 Wie stellst du dir das vor? Mit stringstreams scheinst du ja eine Idee davon zu haben, dass würde mich auch interessieren.
    Ansonsten einfach den Wert als Zahl halten und nur bei Bedarf in einen String umwandeln. Du kannst auch ständig hin und her umwandeln, wenn das notwendig ist.



  • ok ich erklärs kurz:

    string s = "1";
    stringstream ss;
    int i;
    // jetzt will ich, dass s = 2 wird
    ss << s;
    ss >> i;
    ++i;
    // ... und wieder zurück zum string
    


  • Hin und her umwandeln ist bestimmt nicht schön... Aber wenn es notwendig ein muss naja.


  • Mod

    Und wenn s="a"? Soll dann "b" rauskommen? Und wenn s="ab", was soll dann rauskommen? Und bei s="19"? Soll dann "20" rauskommen?

    Beschreib mal, was das ganze überhaupt soll, dann kann man auch bessere Antworten geben. Bisher sieht es eher nach schlechtem Design aus. Steckt da irgendein Sinn dahinter?



  • Meinst du, dass der String eine Zahl beinhaltet, die du inkrementieren willst? In dem Fall ginge stringstream, oder auch boost::lexical_cast.

    EDIT:

    string str="5";
    int n=boost::lexical_cast<int>(str);
    str=boost::lexical_cast<string>(++n);
    

    Oder so, wenn du unbedingt alles in eine Zeile quetschen willst:

    str=boost::lexical_cast<string>((boost::lexical_cast<int>(str))+1);
    

    So sieht es schon mal schöner aus als mit stringstream. Ob die ganze Sache sinnvoll ist, bleibt aber fragwürdig. SeppJ hat schon Recht. Wieso liegt der Wert (nur) als String vor?



  • Gucky schrieb:

    wie der titel schon sagt, will ich einen string inkrementieren.

    Ich nehme an, dass Dein string die Dezimaldarstellung einer Ganzzahl speichert und dass Du ohne stringstream den String so verändern möchtest, dass er die nächst höhere Ganzzahl repräsentiert.

    Gucky schrieb:

    jetzt meine frage, ob das in c++ nur über strinstreams geht.

    Das geht auch ohne stringstream. Eine kleine Funktion zu schreiben, die das macht, ist auch gar nicht so schwer. Du solltest ja wissen, wie man beim Stellenwertsystem von einer auf die nächste Zahl kommt. Du kannst doch zählen, oder?



  • ja ich kann zählen und danke für die antworten, ich habs jetzt so gemacht, dass ich die zahl anfangs als int hab und sie nur einaml am ende in nen string wandeln muss



  • Gucky schrieb:

    ja ich kann zählen und danke für die antworten, ich habs jetzt so gemacht, dass ich die zahl anfangs als int hab und sie nur einaml am ende in nen string wandeln muss

    Das hört sich sinnvoll an!


Anmelden zum Antworten