Problem mit fstream und GetUserName.



  • Hi Leute ich wollte heute ein Programm erstellen da will ich dass es auch andere
    Benutzer benutzen können.

    TCHAR name [ UNLEN + 1 ];
    		DWORD size = UNLEN + 1;
    
    		if (GetUserName( (TCHAR*)name, &size ))
    		cout << "Hello, " << name << "!\n";
    		else
    		cout << "Hello, unnamed person!\n";
    //so bekomme ich den UserName
    //aber wie kann ich jetzt machen dass da nicht Patrick steht sondern dass auch //andere benutzer die dann zb. einen anderen Namen haben das auch benutzen können.
    fstream fout2("C:\\Users\\Patrick\\Downloads\\Buch\\msvcp110d.dll", ios::out | ios::binary);
    

    Danke schonmal im voraus.



  • Ich glaube, du musst ins C Board.

    Nein warte, du benutzt ja fstream !

    DWORD size = UNLEN + 1;
    std::basic_string<TCHAR> name(size);
    
    if ( GetUserName( &name[0], &size) )
    {
            name.resize( size - 1 );
            cout << "Hello, " << name << "!\n"; // Hier kann es zu Problemen kommen, je nach dem wie TCHAR definiert ist.
    }
    else
            std::cerr << "Couldn't retreive user name!";
    

    So, das ist besser.

    Und um den User-Namen einzusetzen, kannst du GetUserProfileDirectory nutzen.
    Oder du hängst den User-Namen an C:\\Users\\ an, ich bin mir allerdings nicht gewiss, ob das immer funktioniert.



  • Also mit fstream habe ichs jetzt raus nur bei _mkdir

    kann ich nicht dieses hier machen:

    TCHAR name [ UNLEN + 1 ];
    		DWORD size = UNLEN + 1;
    
    		if (GetUserName( (TCHAR*)name, &size ))
    		cout << "Hello, " << name << "!\n";
    		else
    		cout << "Hello, unnamed person!\n";
    		string tada = name;
    fstream fout2("C:\\Users\\"+tada+"\\Downloads\\Buch\\msvcp110d.dll", ios::out | ios::binary);
    

    dies funktioniert aber dies funktioniert nicht:

    _mkdir("C:\\Users\\"+tada+"\\Downloads\\Buch");
    

    Da kommt dann der Error : Dies ist keine passende Konvertierungsform



  • fstream fout2("C:\\Users\\"+tada+"\\Downloads\\Buch\\msvcp110d.dll", ios::out | ios::binary);
    

    Wenn du nur schreiben willst, dann nimmst du gefälligst einen ofstream:

    ofstream out("C:\\Users\\"+tada+"\\Downloads\\Buch\\msvcp110d.dll", ios::binary);
    

    Dieses hier:

    _mkdir("C:\\Users\\"+tada+"\\Downloads\\Buch");
    

    kann auch nicht funktionieren, da _mkdir einen C-String erwartet. Ergänzung:

    _mkdir( ("C:\\Users\\"+tada+"\\Downloads\\Buch").c_str() );
    


  • Sone schrieb:

    fstream fout2("C:\\Users\\"+tada+"\\Downloads\\Buch\\msvcp110d.dll", ios::out | ios::binary);
    

    Wenn du nur schreiben willst, dann nimmst du gefälligst einen ofstream:

    ofstream out("C:\\Users\\"+tada+"\\Downloads\\Buch\\msvcp110d.dll", ios::binary);
    

    Dieses hier:

    _mkdir("C:\\Users\\"+tada+"\\Downloads\\Buch");
    

    kann auch nicht funktionieren, da _mkdir einen C-String erwartet. Ergänzung:

    _mkdir( ("C:\\Users\\"+tada+"\\Downloads\\Buch").c_str() );
    

    Vielen Dank dir das kann geschlossen werden


Anmelden zum Antworten