int to char



  • Ich hab zwar durchs Forum schon gestöbert, aber kann mein Problem nicht lösen.
    Ich kopier dieselbe Datei in einem Ordner. An dieser Kopie, soll aber eine User-ID angehängt werden.
    Ich zeig euch erst mal das Programm, das kopieren kann:

    #include<iostream>
    
    using namespace std;
    
    int main()
        {
                  system("pause");
                  cout<<"Neuer User"<<endl;
                  system("copy user.txt userneu.txt");
                  system("pause");
                  return 0;     
        }
    

    So, hier wird aus einer vorgegebenen Datei eine neue mit einem anderen Namen erstellt.
    Aber ich will im Namen einen Integer haben, also die User-ID. Und da streikt es bei mir.
    Also es sollte ca. so aussehen:

    int id=12345;
    system("copy user.txt user"+id+".txt);
    

    wie kann ich es lösen, dass z.B. --> user12345.txt ensteht?



  • Vielleicht so in der Art? Bin momentan nicht so fit in c++.

    char cBuffer[50];
    int id=12345;
    int iWrittenChars = sprintf(cBuffer, "copy user.txt user%d.txt", id);
    cBuffer[iWrittenChars] = '\0';
    system(cBuffer);
    

    Da hat der Compiler sicher noch einiges zu meckern!?



  • Hallo zappelruebe,

    verwende dazu einen std::stringstream:

    // [cpp]-Tag erleichtert das Lesen von C++-Code ;-)
    
    #include <sstream>
    #include <string>
    //...
    
    int userId = 12345;
    std::string userFile = "user.txt";
    
    std::stringstream newUserFile;
    newUserFile << "user" << userId << ".txt"; // ergibt "user12345.txt"
    
    std::stringstream copyCmd;
    copyCmd << "copy " << userFile << " " << newUserFile.str(); // --> "copy user.txt user12345.txt"
    
    system(copyCmd.str().c_str()); // mit str() erhält man ein std::string
                                   // mit c_str() erhält man einen C-String (char-Array)
    
    //...
    


  • oneill5000 schrieb:

    Vielleicht so in der Art? Bin momentan nicht so fit in c++.

    sprintf ist ja auch C und nicht C++ 😉



  • ich bin erstaunt
    das funktioniert. Danke



  • Roger Wilco schrieb:

    oneill5000 schrieb:

    Vielleicht so in der Art? Bin momentan nicht so fit in c++.

    sprintf ist ja auch C und nicht C++ 😉

    Das sollte ja nicht das Problem sein, aber Recht hast du natürlich.



  • zappelruebe schrieb:

    int id=12345;
    system("copy user.txt user"+id+".txt);
    

    wie kann ich es lösen, dass z.B. --> user12345.txt ensteht?

    Such mal nach stringstream

    string s;
      {
        stringstream ss;
        ss << "copy user.txt user" << id << ".txt";  
        ss.str().swap(s);
      }
      system(s.c_str());
    

    Gruß,
    SP



  • oneill5000 schrieb:

    Das sollte ja nicht das Problem sein, aber Recht hast du natürlich.

    Ich wollte auch nur klugscheißen. 😉

    Die C++-Variante ist aber grundsätzlich sicherer.



  • also die erste Variante von oneill5000 funktioniert.
    Ich werde auch mal die andere Variante testen




Anmelden zum Antworten