ich bereits boost :: Format in vielen Fällen verwendet, aber ich fand eine, für die die Umsetzung Fenster nicht reagiert, wie ich erwartet hatte, weil es eine Ausnahmeboost :: Format Ausnahme unter Windows nur
boost::bad_format_string: format-string is ill-formed
Ich werfe verwenden Makro hexa Anzahl Ausgabeformat für andere Plattform zu definieren:
#if (defined(WIN32) || defined(WIN64))
#define FORMATUI64X_09 "%09I64X"
#define FORMATUI64X_016 "%016I64X"
#else
#if defined __x86_64__
#define FORMATUI64X_09 "%09lX"
#define FORMATUI64X_016 "%016lX"
#else
#define FORMATUI64X_09 "%09llX"
#define FORMATUI64X_016 "%016llX"
#endif
#endif
und Aufrufformat wie unten:
string msg = (boost::format("0x"FORMATUI64X_016"(hex) \t %i \t %d \t %s \t %i\t ") % an uint64_t % an int % an uint % a char* % an uint).str();
Bemerkung, dass ich eine Syntax verwende, die perfekt mit einem "fprintf" funktioniert.
Ich nehme an, dass es aus dem 'Uint64_t' Format als Hexa kommt, aber wissen Sie, die gleiche Zeile in einer Weise zu schreiben, die es für alle Plattform funktioniert?