printf in eine variable?



  • hallo

    printf(%x, temp) gibt ja einen text in der konsole aus und konvertiert ihn vorher in hex.
    gibt es eine möglichkeit, den text in eine variable zu schreiben?
    oder vielleicht anders gefragt, gibt es eine möglichkeit ein std::string in hex umzuwandeln?





  • es gibt auf jedenfall die Funktion sprintf() mit der du einen formatierten Texi in ein char* speichern kannst



  • achso, erstmal danke, für die schnell antwort. aber jetzt hab ich ein weiteres problem:

    std::string sTemp = "";
    
    for(int i = 0; i < strlen(argv[1]); i++)
      sTemp = sprintf(",%x", argv[1][i]);
    
    printf("%s\n", sTemp);
    

    fehlermeldung ist hier:
    bei sprintf ==> invalid converion from 'char' to 'const char*'
    und bie printf ==> cannot pass objects of non-POD type 'struct std::string'

    was hat das zu bedeuten?



  • std::string sTemp = ""; // wird auch so mit einem leeren String initialisiert
    
    for(int i = 0; i < strlen(argv[1]); i++) 
      sTemp = sprintf(",%x", argv[1][i]);  // wass zum Teufel soll das machen?
    
    printf("%s\n", sTemp); // muss sTemp.c_str() heißen
    

    Trotzdem würde ich zu Stringstream raten.



  • std::string sTemp = ""; // sischär is sischär man weiß ja nie
    
    for(int i = 0; i < strlen(argv[1]); i++)  
      sprintf(sTemp, ",%x", argv[1][i]);  // wandelt zeichen für zeichen vom ersten parameter in hex zeichen um, hab mich noch bei der syntax vertan
    
    printf("%s\n", sTemp.c_str()); // upsi, da war doch noch was ;)
    

    das mit dem sprintf geht noch net so, der soll ja eigentlich an das sTemp was dran hängen. vielleicht kenn einer noch ne funktion, die ich dann einfach so aufrufen kann: zb. sTemp += ConvertToHex(argv[1][i])



  • wie die anderen schon sgten, stringstreams wären vielleicht sowieso besser, als sprintf().. wenn du trotzdem sprintf8) verwenden will:

    du kannst auch problemlos was an einen string anhängen, du brauchst halt nur eine Puffer-Variable:

    string str; 
    char buffer[100];
    sprintf(buffer,"%x",variable);
    str+=buffer;
    

Anmelden zum Antworten