C++实现类似printf的不定参数函数

C++实现类似printf的不定参数函数

      其实,C++实现类似printf()函数的不定参数很简单,代码一写就明白了:
 1  #define  BUFFSIZE 4096
 2 
 3  void  Log2DebugView( const   char *  format,  ...)
 4  {
 5       char  buf[BUFFSIZE];
 6       char *  p  =  buf;
 7      va_list args;
 8      va_start(args, format);
 9      vsprintf(p, format, args);
10      va_end(args);
11       // OutputDebugStringA(buf);
12  }
      其中最核心的就是第7到第10行,解析format字符串中的格式化参数,如 %c, %d 等。最后得到的'buf',即是格式化后的字符串。比如调用了: Log2DebugView("Test dbgview for id=%d, name=%s.", 5, "chosen"); 然后buf的内容便是: " Test dbgview for id=5, name=chosen."。
      至于最后的那句"OutptDebugString(buf);",是一个系统调用函数,主要用于将格式化后信息输出到Visual Studio的'output'窗口中(Debug模式下),或者输出到一个叫"dbgView.exe"的程序窗口中(运行模式下)。这对于我们调试来说是一个非常有用的工具,而且程序运行完后,这些格式化后的信息,还会保留在output或debView的窗口中,供我们分析。注:dbgView.exe可以在网上搜索并免费下载使用。

你可能感兴趣的:(C++实现类似printf的不定参数函数)