wsprintf. Alternative?
-
Hallo!
Ich hab ein Programm, in dem für alles, was Zeichen und Zeichenketten angeht, char-Arrays verwendet. Um diese char-Arrays zu füllen benutzt der ursprüngliche Autor wsprintf.
Jetzt hab ich das Problem, dass wenn ich damit mehr als 1024 Zeichen in ein Array, dass definitiv mehr Platz hat, z.B. 2048 Zeichen, schreiben will, es mir ab 1024 abschneidet.
Ich brauche aber mehr, weil ich zum einen Dateien auslesen und dann zurechtschnipseln muss und zum anderen ein SQL-String nun mal länger werden kann.
Der Hacken an der Sache ist, dass ich mehrere Variablen da rein schreiben muss. Es funktioniert nicht mit '+' oder strcat. Ich hab mir auch schon überlegt, 'einfach' mit strings zu arbeiten, allerdings bekommt das Visual c++ Studio das irgendwie nicht gebacken...
Im Endeffekt suche ich eine Alternative zu wsprinft, mit der ich mehrere Variablen in eine schreiben kann, ohne diese 1024er Grenze.
Wäre echt dankbar für Tipps!
LG
-
#include <sstream> int i = 5; double d = 5.5; std::ostream outputStringStream; outputStringStream << "Wert von i: " << i << " Wert von d: " << d; std::string str = outputstream.str(); const char* pStr = str.c_str();
-
std::ostream sollte std::ostringstream heißen
und dann hab ich nochmal den variablennamen falsch geschrieben
-
Mariel schrieb:
Um diese char-Arrays zu füllen benutzt der ursprüngliche Autor wsprintf.
Klingt irgendwie seltsam, wsprintf ist eigentlich für wide Strings gedacht.
Mariel schrieb:
Jetzt hab ich das Problem, dass wenn ich damit mehr als 1024 Zeichen in ein Array, dass definitiv mehr Platz hat, z.B. 2048 Zeichen, schreiben will, es mir ab 1024 abschneidet.
wide Zeichen können ua mit 2 Byte Grösse implementiert sein. Evtl. wird deshalb abgeschnitten.
Mariel schrieb:
Ich hab mir auch schon überlegt, 'einfach' mit strings zu arbeiten, allerdings bekommt das Visual c++ Studio das irgendwie nicht gebacken...
Weil der Fehlerfaktor evtl. nicht im Rechner, sondern davor sitzt? :p
Btw, C++ Äquivalent zu wsprintf wäre std::wostringstream.
-
groovemaster schrieb:
Mariel schrieb:
Um diese char-Arrays zu füllen benutzt der ursprüngliche Autor wsprintf.
Klingt irgendwie seltsam, wsprintf ist eigentlich für wide Strings gedacht.
[/quote]
nein dafür gibts wsprintfW
-
also dieses w bei wsprintf heißt nicht wide string. gibt auch ne ansi version davon. wsprintfA
-
wsprintf == "windows sprintf"
-
falsch!! schrieb:
nein dafür gibts wsprintfW
So, hab schnell mal nachgeschaut. Die wide Version heisst nicht wsprintf, sondern swprintf. Kommt halt davon, wenn man sowas schon lang nicht mehr benutzt hat. Sry.
Ein wsprintf, wsprintfA, wsprintfW oder dergleichen gibts jedenfalls nicht. Zumindest nicht in diesem Forum.
Aber wie bereits erwähnt, wäre dann std::ostringstream das Mittel der Wahl.
-
Mariel schrieb:
Jetzt hab ich das Problem, dass wenn ich damit mehr als 1024 Zeichen in ein Array, dass definitiv mehr Platz hat, z.B. 2048 Zeichen, schreiben will, es mir ab 1024 abschneidet.
MSDN schrieb:
int wsprintf( LPTSTR lpOut, LPCTSTR lpFmt, ... ); [i]lpOut[/i] [out] Pointer to a buffer to receive the formatted output. The maximum size of the buffer is 1024 bytes....
To use buffers larger than 1024 bytes, use _snwprintf. For more information, see the documentation for the C run-time library.