что то вроде этого:
string std_format(const char* pFrmString, ...)
{
//------------------------------------------------------------- аналог CString::Format (ANSI)
//pFormatString -------------------------------------------------------- форматируемая строка
//... ---------------------------------------------------------------------- набор параметров
//*******************************************************************************************
string outStr;
outStr.clear();
size_t pFrmSize = strlen(pFrmString);
if(pFrmSize == NULL) // нет строки для форматирования, очищаем строку
{
return outStr;
}
va_list args;
va_start(args, pFrmString);
size_t pNewLen = _vscprintf(pFrmString, args);
size_t pNewSize = (pNewLen + 1) * sizeof(char);
char* pFrmBuffer = (char*) malloc(pNewSize);
if(pFrmBuffer)
{
memset(pFrmBuffer, 0, pNewSize);
int charswritten = vsprintf(pFrmBuffer, pFrmString, args);
if(charswritten == (int)pNewLen) // успешно
{
outStr.assign(pFrmBuffer);
free((void*)pFrmBuffer);
va_end(args);
return outStr;
}
free((void*)pFrmBuffer); // ошибка, не все символы скопировались
}
va_end(args);
return outStr;
}
Здравствуйте, <Аноним>, Вы писали:
А>что то вроде этого:
Ну тогда уж выделять память не в malloc/free, а в std::vector<char>.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>