考虑代码示例
/* vsprintf example */
#include <stdio.h>
#include <stdarg.h>
void PrintFError (char * format, ...)
{
char buffer[256];
va_list args;
va_start (args, format);
vsprintf (buffer,format, args);
perror (buffer);
va_end (args);
}
int main ()
{
FILE * pFile;
char szFileName[]="myfile.txt";
int firstchar = (int) '#';
pFile = fopen (szFileName,"r");
if (pFile == NULL)
PrintFError ("Error opening '%s'",szFileName);
else
{
// file successfully open
fclose (pFile);
}
return 0;
}
我想避免在函数PrintFError中使用new和char *,我想到的是ostringstream,但它不接受与vsprintf相同形式的参数。那么,在c ++中是否有任何vsprintf等效产品?
谢谢
最佳答案
简短的答案是没有答案,但是boost::format
提供了此缺少的功能。通常,对于流,如果不确定,请采用其他方法,以了解有关C ++ IO流的基础教程。