考虑代码示例

/* 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流的基础教程。

07-28 02:38