Integer in Char[] Array umwandeln



  • Erstmal danke für deine umfangreiche Antwort.

    Ich habe den Code noch mal ausprobiert, jetzt klappt alles, aber der Effekt bleibt aus.

    Er sagt:

    "Rename error: No such file or directory"
    

    PS.: Ich habe auf'm Desktop sehr wohl eine Datei namens "data.txt" angelegt...

    #include <string>
    #include <sstream>
    #include <iostream>
    
    #include <ctime>
    #include <cstdio>
    #include <cstdlib>
    
    int main()
    {
        std::srand(std::time(0));
    
        int random = std::rand() % 32767 + 1;
        std::string folder = "C:\\Users\\***\\Desktop\\";
        std::string oldname = folder + "data.txt";
    
        std::ostringstream oss;
        oss << folder << random << ".txt";
    
        std::string newname = oss.str(); 
    	std::cout << newname << std::endl;
    	std::cout << oldname << std::endl;
        int err = std::rename(oldname.c_str(), newname.c_str()); 
    
        if(err)
        {
    		std::perror("Rename error");
    		std::cin.get();
        }
        else
        {
            std::cout << "Success! New path: " << newname << std::endl;
    		std::cin.get();
        }
    
        return 0;
    }
    


  • Es steht doch hoffentlich nicht wirklich *** in deinem Pfad?



  • Braunstein schrieb:

    Es steht doch hoffentlich nicht wirklich *** in deinem Pfad?

    Nein.


  • Administrator

    skullyan schrieb:

    Braunstein schrieb:

    Es steht doch hoffentlich nicht wirklich *** in deinem Pfad?

    Nein.

    Stimmt auch der restliche Pfad? Bist du ganz sicher? Überprüfe es lieber nochmals dreimal mit voller Konzentration. 😉

    Grüssli



  • Dravere schrieb:

    skullyan schrieb:

    Braunstein schrieb:

    Es steht doch hoffentlich nicht wirklich *** in deinem Pfad?

    Nein.

    Stimmt auch der restliche Pfad? Bist du ganz sicher? Überprüfe es lieber nochmals dreimal mit voller Konzentration. 😉

    Grüssli

    Tut er es denn nicht? Wenn ja, bitte ich um Korrigierung, denn ich finde wirklich keinen Fehler... Bis auf meinen Benutzernamen sollte es in Windows ja normal sein...
    😕


  • Administrator

    skullyan schrieb:

    Tut er es denn nicht? Wenn ja, bitte ich um Korrigierung, denn ich finde wirklich keinen Fehler... Bis auf meinen Benutzernamen sollte es in Windows ja normal sein...
    😕

    Es ist überall ein wenig anders. Ja nach Windows oder Sprache. Zudem gibt es auch mehrere Desktops, für jeden User halt und meistens noch ein allgemeiner.

    Bei mir sähe der Pfad so aus:
    C:\Dokumente und Einstellungen\***\Desktop\

    Wobei *** durch mein Name zu ersetzen wäre. Und bei mir funktioniert der Code, wenn alles richtig angegeben wurde 😉

    Grüssli



  • Dravere schrieb:

    skullyan schrieb:

    Tut er es denn nicht? Wenn ja, bitte ich um Korrigierung, denn ich finde wirklich keinen Fehler... Bis auf meinen Benutzernamen sollte es in Windows ja normal sein...
    😕

    Es ist überall ein wenig anders. Ja nach Windows oder Sprache. Zudem gibt es auch mehrere Desktops, für jeden User halt und meistens noch ein allgemeiner.

    Bei mir sähe der Pfad so aus:
    C:\Dokumente und Einstellungen\***\Desktop\

    Wobei *** durch mein Name zu ersetzen wäre. Und bei mir funktioniert der Code, wenn alles richtig angegeben wurde 😉

    Grüssli

    Ich krieg langsam die Krise:

    #include <string>
    #include <sstream>
    #include <iostream>
    
    #include <ctime>
    #include <cstdio>
    #include <cstdlib>
    
    int main()
    {
        std::srand(std::time(0));
    
        int random = std::rand() % 32767 + 1;
        std::string folder = "C:\\";
        std::string oldname = folder + "data.txt";
    
        std::ostringstream oss;
        oss << folder << random << ".txt";
    
        std::string newname = oss.str(); 
    	std::cout << newname << std::endl;
    	std::cout << oldname << std::endl;
        int err = std::rename(oldname.c_str(), newname.c_str()); 
    
        if(err)
        {
    		std::perror("Rename error");
    		std::cin.get();
        }
        else
        {
            std::cout << "Success! New path: " << newname << std::endl;
    		std::cin.get();
        }
    
        return 0;
    }
    

    Nicht mal so klappt es...



  • Was klappt nicht, kommst du in den else -Zweig? Hast du den Pfad auch mal genau angeschaut (zum Beispiel Zeichen für Zeichen)? Was sagt denn perror() ?

    Ich würde übrigens eher einen einfachen Slash / verwenden als einen Backslash mit Escape-Sequenz, das ist plattformunabhängiger.



  • Nexus schrieb:

    Was klappt nicht, kommst du in den else -Zweig? Hast du den Pfad auch mal genau angeschaut (zum Beispiel Zeichen für Zeichen)? Was sagt denn perror() ?

    Ich würde übrigens eher einen einfachen Slash / verwenden als einen Backslash mit Escape-Sequenz, das ist plattformunabhängiger.

    Ja, habe ich. Nein er kommt in den if -Zweig.

    perror sagt: "No such file or directory"

    PS.: Der Slash "/" hat nicht geklappt. Es kam der UNIX-Slash raus. Wie geht das?



  • Also stimmt der Pfad nicht. Überprüfe den String nochmals, evtl. mit dem Debugger.

    Und wie meinst du das mit dem UNIX-Slash?



  • Es geht jetzt. Was für'n dummer Fehler von mir -.-

    Früher hatte ich Dateiendungen an. Seit ich sie ausgestellt habe, bin ich wohl etwas verwirrt, so hieß die Datei, die ich erstellte, "data.txt.txt".

    Nexus schrieb:

    Und wie meinst du das mit dem UNIX-Slash?

    Der Backslash wird ja von Microsoft benutzt. Der "normale" Slash hingegen halt von UNIX-Systemen.


  • Administrator

    skullyan schrieb:

    Früher hatte ich Dateiendungen an. Seit ich sie ausgestellt habe, bin ich wohl etwas verwirrt, so hieß die Datei, die ich erstellte, "data.txt.txt".

    Ich sagte ja dreimal ganz konzentriert. Es MUSSTE einfach am Pfad liegen 😉

    skullyan schrieb:

    Der Backslash wird ja von Microsoft benutzt. Der "normale" Slash hingegen halt von UNIX-Systemen.

    Der Slash funktioniert auch auf Windows, ist nur vielen nicht bekannt. Sofern du nicht an Abwärtskompatibilität bis in DOS hinein interessiert bist, kannst du auch den Slash nehmen.

    @Nexus,
    Platformunabhängiger ... mit "C:" ist er schon völlig von Windows abhängig :p

    Grüssli



  • Dravere schrieb:

    skullyan schrieb:

    Früher hatte ich Dateiendungen an. Seit ich sie ausgestellt habe, bin ich wohl etwas verwirrt, so hieß die Datei, die ich erstellte, "data.txt.txt".

    Ich sagte ja dreimal ganz konzentriert. Es MUSSTE einfach am Pfad liegen 😉

    skullyan schrieb:

    Der Backslash wird ja von Microsoft benutzt. Der "normale" Slash hingegen halt von UNIX-Systemen.

    Der Slash funktioniert auch auf Windows, ist nur vielen nicht bekannt. Sofern du nicht an Abwärtskompatibilität bis in DOS hinein interessiert bist, kannst du auch den Slash nehmen.

    @Nexus,
    Platformunabhängiger ... mit "C:" ist er schon völlig von Windows abhängig :p

    Grüssli

    Man lernt immer dazu... 😃


Anmelden zum Antworten