- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
// easy-to-use function for use printf-formatting with stl-strings
std::string StrFormat(const char* fmt,...);
void MakeBackup(const char* dataTime)
{
std::string name = StrFormat("%s", dataTime);
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+158
// easy-to-use function for use printf-formatting with stl-strings
std::string StrFormat(const char* fmt,...);
void MakeBackup(const char* dataTime)
{
std::string name = StrFormat("%s", dataTime);
...
}
wvxvw 03.03.2012 20:07 # 0
defecate-plusplus 03.03.2012 21:46 # +1
lifemaker 03.03.2012 23:10 # 0
сама идея этой функции чуток спорная. но для использования в некритичных местах - удобна и надёжна.
если интересно имплементацию посмотреть - она здесь http://sourceforge.net/projects/popcapframework/
у нас чуток допиленная версия, но принципиальных изменений там нет
defecate-plusplus 04.03.2012 01:39 # +12
автор в цикле выделяет буфер, пишет в него через vsnprintf, и смотрит, всё ли влезло, если не влезло - realloc буфера в 2 раза больше, повторить
это всё описывается в файле Common.h/.cpp, где кроме вышеописанного есть еще примитивы работы со строками, с xml, файловой системой, ГПСЧ, велосипед для htonl/htons, в общем, крайне полезный файлик, здорово, что всё нужное сразу в нем
всё это обёрнуто в namespace Sexy {...}
еще немножко, простите:
вот ведь что спермотоксикоз с людьми делает
Говногость 04.03.2012 01:55 # +1
absolut 04.03.2012 09:59 # 0
lifemaker 04.03.2012 11:21 # 0
defecate-plusplus 04.03.2012 14:04 # 0
если очень очень очень хочется форматированного вывода, то советую обратить внимание на boost::format, это C++-way, типобезопасно и вообще гораздо богаче функционал
ну а под тёплой ламповой сишечкой в некоторых системах (началось с *bsd, затем вроде glibc подтянулся) есть *asprintf, которая сама выделит буфер - обычно реализовано через vfprintf в файл/поток, расположенный в памяти
в стандарте она отсутствует, но типобезопасность там такая же никчемная