Ich möchte so etwas wie dies tun:c function string formatiert Rückgabe
writeLog(printf("This is the error: %s", error));
so dass ich für eine Funktion suchen, die eine formatierte Zeichenfolge zurückgibt.
Ich möchte so etwas wie dies tun:c function string formatiert Rückgabe
writeLog(printf("This is the error: %s", error));
so dass ich für eine Funktion suchen, die eine formatierte Zeichenfolge zurückgibt.
Gegeben, keine solche Funktion existiert, einen etwas anderen Ansatz betrachten: make writeLog
printf-like, d. H. Nehmen Sie eine Zeichenfolge und eine variable Anzahl von Argumenten. Dann formatieren Sie die Nachricht intern. Dadurch wird das Speicherverwaltungsproblem gelöst und vorhandene Verwendungsmöglichkeiten von writeLog
werden nicht aufgehoben.
Wenn Sie dies möglich zu finden, können Sie etwas in dieser Richtung verwenden:
void writeLog(const char* format, ...)
{
char msg[100];
va_list args;
va_start(args, format);
vsnprintf(msg, sizeof(msg), format, args); // do check return value
va_end(args);
// write msg to the log
}
Danke für diesen guten Ansatz. Genau das, was ich gesucht habe. – Zulakis
Es gibt keine solche Funktion in der Standardbibliothek und es wird nie eine in der Standardbibliothek geben. Wenn Sie einen wollen, können Sie es selbst schreiben. Folgendes müssen Sie beachten: Wer wird den Speicher für die zurückgegebene Zeichenfolge reservieren und wer wird ihn freigeben? Wird es threadsicher sein oder nicht? Wird die maximale Länge der zurückgegebenen Zeichenfolge begrenzt oder nicht?
nachschlagen 'snprintf'. –
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/ für sprintf – Mark
Sorry, aber es scheint, als ob snprintf das selbe wie sprintf tut und die formatierte Zeichenkette in eine Variable setzt. Nach was ich suche, ist eine Funktion, die direkt die formatierte Zeichenkette zurückbringt. – Zulakis