[C++] printf-liknande formatering till string

Permalänk
Medlem

[C++] printf-liknande formatering till string

Låt mig formulera mig bättre.
Jag har en klass som behandlar logging/output i programmet, som helt enkelt tar emot en string och sen output genom std::cerr.

Problemet kommer när jag vill (på ett smidigt sätt) skicka in siffror. Den ultimata lösningen vore ett printf-liknande system: ("Error code: %f", 231.0f) som konverteras till en string och skickas in till logging-klassen, eller liknande.

Finns det något sätt att lösa detta?

Visa signatur

| Antec P183 | AMD Phenom 2 940 | Corsair XMS2 DDR2 8192 MB | XFX HD4870 | Gigabyte MA-790X-UD3P | Corsair VX 450W | Primärt OS: Arch Linux | Windows 7 x64 |

Permalänk
Medlem

Nu kan jag ju inget om c++ men det du söker är en StringBuilder-klass, wrappa den så är det klart.

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk
Hedersmedlem

stringstream kanske? Eller varför inte sprintf?

Permalänk
Medlem

Detta är inte C++ visserligen, men du kan ju göra samma sak som printf.

printThis(const char* fmt, ...) { va_list list; char *buf = NULL; va_start(list, fmt); if (vasprintf(&buf, fmt, list) != -1) fprintf(stderr, "%s", buf); va_end(list); free(buf); }

Edit: Insåg just att mitt bidrag förmodligen är lite redundant då du lika gärna kan använada printf i fall det inte var något mer än att skriva ut en sträng. Nåja...

Permalänk
Medlem

Använd <<-operatorn för att mata std::cerr.

Exempel inkl ditt float-fall: C++ Notes: I/O Manipulators (byt ut cout mot cerr)