ulong in string und umgekehrt?



  • Hey,

    wie muss ich einen unsgined long-Wert in einen String "reinpacken", um ihn später wieder auslesen zu können... So geht das nicht:

    string ULToString(const unsigned long& l)
    {
    	char acOut[32];
    	acOut[sizeof(unsigned long)]='\0';
    	memcpy(acOut, &l, sizeof(unsigned long));
    
    	return string(acOut);
    }
    
    unsigned long StringToUL(const char* pcString)
    {
    	unsigned long lOut;
        memcpy(&lOut, pcString, sizeof(unsigned long));
    
    	return lOut;
    }
    

    Gibt es möglichkeiten, sprintf umgekehrt zu nutzen (gibt es eine solche Funktion?)? Kann ich z.B. sagen
    sprintf(ac, "%X", meinLong);
    IrgendeineFunktion(ac, "%X", &meinLong); // meinLong aus ac extahieren???



  • ulong schrieb:

    Hey,

    wie muss ich einen unsgined long-Wert in einen String "reinpacken", um ihn später wieder auslesen zu können... So geht das nicht:

    string ULToString(const unsigned long& l)
    {
    	char acOut[32];
    	acOut[sizeof(unsigned long)]='\0';
    	memcpy(acOut, &l, sizeof(unsigned long));
    
    	return string(acOut);
    }
    
    unsigned long StringToUL(const char* pcString)
    {
    	unsigned long lOut;
        memcpy(&lOut, pcString, sizeof(unsigned long));
    
    	return lOut;
    }
    

    C++-FAQ:: Einmal Zahl nach String und zurück.

    Caipi



  • Shit, ich bin zu dumm die Suche zu verwenden. Steinigt mich 😞



  • Hast du deine funktionen schon einmal ausprobiert ?
    Ich würde vorschlagen stringstreams zur konvertierung verwenden.

    #include <sstream>
    #include <iostream>
    
    int main() {
      std::stringstream s;
      unsigned long l = 12345;
      s << l;
      std::cout << s.str() << std::endl;
      l =0;
      s >> l;
      std::cout << l << std::endl;
    }
    

Anmelden zum Antworten