int to char



  • irgendwie will das nich so...

    folgendes problem:
    ich habe einen dateinamen char[] X und will ihn in char[] Y kopieren. anschliessend soll die endung gelöscht, ein int I und eine neue endung angefügt werden.
    wie mach ich das?



  • #include <string>
    
    std::string str1,str2;
    str2 = "TestTest"; //str2 = X; Char X in str2 kopieren 
    str1.assign(str2,0,4);  //Hier kannst du einen Zeiger auf dein Array einsetzen statt str2
    //assign kopiert einen Teil des Strings, hier von Position 4 Zeichen
    //wenn du weisst wie lang der dateiname ist dann so wie oben str1.assign
    //wenn du nur weisst welche Endung dann -> (str2,0,str2.size()-4);  4 Zeichen dateiendung als Beispiel
    str1 += ".neue Endung";
    cout << str1.c_str() << endl;
    


  • Im Kommentar sollte es natürlich heißen: von Position 0 an 4 Zeichen.

    Die Umwandlung steht schon ein paar Beträge darüber.



  • stringstream foo;
    foo << bisheriger_name << deine_zahl;
    

    per foo.str().c_str() kannst du es wieder als char* ansprechen.



  • hm, in welcher bibliothek steckt stringstream?

    gibt es nicht eine einfachere methode (nen cast) um einfach ne int-zahl an ein char[] anzufügen?



  • hm, in welcher bibliothek steckt stringstream?

    In der Standardbibliothek 🙄 Du meinst den Header, der ist sstream

    gibt es nicht eine einfachere methode (nen cast) um einfach ne int-zahl an ein char[] anzufügen?

    Nein, es gibt keinen Cast. Ein Cast ist eine Typumwandlung, was du willst ist einfach eine andere Darstellung. Was passt dir an der vorgestellten Methode nicht?

    @Helium
    als const char* :p



  • kingruedi schrieb:

    hm, in welcher bibliothek steckt stringstream?

    In der Standardbibliothek 🙄 Du meinst den Header, der ist sstream

    hm, visual meckert sowohl bei <sstream.h> als auch bei <sstream> dass er stringstream nicht kennt 😕



  • vergessen, dass stringstream im namespace std liegt?



  • Hi, mit sprintf kannst du auch einen INT in ein CHAR umwandeln:

    char string[20];
    int zahl=35;
    
    sprintf(string,"%d",zahl);
    

    Erklärung von sprintf:
    Die 1. Angabe, hier string gibt das Ziel an, in welches kopiert werden soll.
    Wie beim normalen printf muss man auch Angaben über den Typ machen, hier %d weil es sich um einen INT Wert handelt.
    Zu guter Letzt muss man noch den INT Wert angeben. Hier zahl



  • kingruedi schrieb:

    vergessen, dass stringstream im namespace std liegt?

    ja so kann mans ausdrücken... 😃

    T0mmy schrieb:

    Hi, mit sprintf kannst du auch einen INT in ein CHAR umwandeln:

    char string[20];
    int zahl=35;
    
    sprintf(string,"%d",zahl);
    

    Erklärung von sprintf:
    Die 1. Angabe, hier string gibt das Ziel an, in welches kopiert werden soll.
    Wie beim normalen printf muss man auch Angaben über den Typ machen, hier %d weil es sich um einen INT Wert handelt.
    Zu guter Letzt muss man noch den INT Wert angeben. Hier zahl

    wunderbar, so etwas simples hab ich gesucht! 👍



  • Ich empfinde sprintf als deutlich komplizierter. Deswegen habe ich es auch nicht erwähnt.

    Und wenn es bequem und einfach sein soll hilft boosts lexical_cast:

    string foo = lexical_cast<string>(35);
    

Anmelden zum Antworten