int nach char* konvertieren



  • Hallo,

    Ich schreibe ein Verwaltungsprogramm zu Übungszwecken.
    Hier möchte ich das Startbudget einlesen und in eine ini Datei schreiben.
    Jedoch stürzt das Programm immer ab :

    cout << "\nIhr Startbudget : ";
                   int startbudget;
                   cin >> startbudget;
    
                   cout << "\n\nDanke für ihre Eingaben !" << endl;
    
                   char *sb = (char*)startbudget;
                   system("pause");
    
                   WritePrivateProfileString("Name","startbudget", sb,ini); // Hier stürzt es immer ab
    

    (In der Variablen "ini" habe ich den Pfad zum Ordner gespeichert)



  • mischasp schrieb:

    Hier möchte ich das Startbudget einlesen und in eine ini Datei schreiben.
    Jedoch stürzt das Programm immer ab :

    Ist auch durchaus logisch. Ist dir eigentlich bewusst was du hier tust? Ein int ist ein String, du machst hier eine Reinterpretierung des binären Abbildes des Integers.

    Der Integerwert 123 ist nicht mit dem String "123" identisch. Und ob char* wirklich das gewünschte ist, ist auch abhängig von deiner Projekteinstellung (LPCTSTR ist bei aktiven Unicode beispielsweise mit Sicherheit kein char*).



  • Der C++ Weg wäre hier wahrscheinlich stringstream zu nutzen:

    #include <string>
    #include <sstream>
    #include <tchar.h>
    
    template <typename SourceType>
    std::basic_string<TCHAR> to_string(SourceType const & src)
    {
        std::basic_stringstream<TCHAR> strm;
        strm << src;
        return strm.str();
    }
    
    // viel später
    
    int startbudget = 42;
    WritePrivateProfileString("Name", "startbudget", to_string(startbudget).c_str(), ini);
    

    EDIT: Unicode-kompatibel gemacht



  • Danke DrakoXP funktioniert !

    Man kann es aber auch so machen (durch ausprobieren herausgefunden) :

    char *string;
                   string = new char[280];
    
                   cout << "\nIhr Startbudget : ";
                   int startbudget;
                   cin >> string;
    
                  WritePrivateProfileString("Name","startbudget", string,ini);
    


  • da drin sind einige Dinge, die mir Übelkeit geben.

    1. Du alluziierst 280 Byte, die du vermutlich bei deinem Wissenstand nirgendwo mehr freigibst.
    -> mach entweder "char str[280];" oder "std::string str;"
    -> alternativ "delete[] string;" am Ende, aber das brauchst du mit den beiden obigen Methoden nicht
    2. Du hast eine ungenutzte int Variable...
    -> lies in die ein und verwende meine Methode und schmeiß den String wieder weg
    -> oder lies in den String ein und prüfe, ob der eine Zahl enthält (geht auch mit stringstream)
    3. Du überprüfst nicht, ob das eingegebene überhaupt eine Zahl ist...
    -> siehe 2.



  • Okay ich nehme deine Methode.
    Aber wie kann ich beim einlesen des Wertes von der ini-Datei den Wert wieder in eine Int Variable konvertieren, sodass ich mit dieser rechnen kann?


Anmelden zum Antworten