Problem mit string



  • Hi, also da ich für fast alles was mit Zeichen zu tun hat "string" benutze, wollt ich dies nun auch bei den Funktiones machen, aber bin dabei auf ein Problem gestoßen:

    GetPrivateProfileString("TEST","line","NULL",STRING,100,"c:\\settings.ini"); 
        cout << STRING<< endl;
    

    Wenn ich das compilier, meckert der Compiler.

    GetPrivateProfileString("TEST","line","NULL",(char*)STRING.c_str(),100,"c:\\settings.ini"); 
        cout << STRING<< endl;
    

    Hier meckert der Compiler nicht, aber der String ist leer 😕

    Also muss ich bei diesen Funktiones tatsächlich doch char* benutzen ??
    Oder wie kriegt man in solche "alten" Funktionen, ein string rein ?

    Gruß Chris



  • hmm nja so wohl eher nicht ... du castest da mal eben nen const weg ... ganz üble Sache ...

    char szString[256];
    GetPrivateProfileStringA("TEST", "line", NULL, szString, 256, "C:\\settings.ini");
    // std::string string(szString);
    std::cout << szString /*string*/ << std::endl;
    

    die auskommentierten Stellen kannst du auch nehmen ... nur in dem Fall überflüssig ...
    Aja die Funktionen sind nicht alt sondern sind auch in C nutzbar 😉



  • Hallo

    Nicht wenn der Parameter einen Wert zugewiesen bekommen soll. Du kannst zwar std::string mit c_str() in einen const char* umwandeln, aber der ist nicht umsonst konstant. Deshalb verursacht dein zweiter Code auch undefiniertes Verhalten.

    Bei sowas must du wirklich char* und new benutzen.

    /Edit : zu spät

    bis bald
    akari



  • hat mich nur gewundert... bei anderen SAchen funktioniert meine Idee:

    GetModuleFileName(NULL,(char*)PATH2.c_str(), MAX_PATH);
    

    Hier enthält PATH2 genau das was es enthalten soll, den Pfad!

    Naja danke schonmal 😉

    Gruß



  • Foxx90 schrieb:

    Hier enthält PATH2 genau das was es enthalten soll, den Pfad!

    Mann, hast Du ein Glück dass die Kiste nicht explodiert ist 😃

    Oder anders: Lass das besser, undefiniert ist undefiniert...



  • Foxx90 schrieb:

    hat mich nur gewundert... bei anderen SAchen funktioniert meine Idee:...

    "undefiniert" != "Klappt nie"
    Ist eher
    "undefiniert" ε ["Löst Weltkrieg aus"; "Funktioniert einmalig und besonderen Umständen"]

    Gruß,

    Simon2.



  • alles klar^^ naja, bugs gibet immer 😃

    Gruß


Anmelden zum Antworten