这个怎么搞?

zhh157 2010-04-25 02:53:12
我想在自定义类中实现一个类似于printf的函数,从而能够实现对输出的控制。
class Test
{
public:
...
void Log(const char* format, ...);
...
};

...

void Test::Log(const char* format, ...)
{
// 除了自己实现可变参数的获取
// 有没有别的办法可以取得用户想打印的字符串?
}

//-----------------------------------------

int main()
{
Test test;

test.Log("Hello");
return 0;
}

如何才能快捷的获取用户想打印的字符串?
各位给支支招,谢谢了!
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2010-04-25
  • 打赏
  • 举报
回复
帮顶。
zhh157 2010-04-25
  • 打赏
  • 举报
回复
非常感谢楼上几位!
pengzhixi 2010-04-25
  • 打赏
  • 举报
回复
在类里面实现你的函数调用形式不约定的话,你没办法的。成员函数的调用形式和不定参数函数的调用形式不一样的。
selooloo 2010-04-25
  • 打赏
  • 举报
回复
用宏。。。。。
cattycat 2010-04-25
  • 打赏
  • 举报
回复
va_list 可以处理变长参数,楼上两个给出了关键的函数。
我就不说了。
jackyjkchen 2010-04-25
  • 打赏
  • 举报
回复
不可小看Windows API


extern "C" int __cdecl printf(const char * format, ...)
{
char szBuff[1024];
int retValue;
DWORD cbWritten;
va_list argptr;

va_start( argptr, format );
retValue = wvsprintf( szBuff, format, argptr );
va_end( argptr );

WriteFile( GetStdHandle(STD_OUTPUT_HANDLE), szBuff, retValue,
&cbWritten, 0 );

return retValue;
}

arong1234 2010-04-25
  • 打赏
  • 举报
回复
你的意思是你不想分析里面的格式控制符?你应该使用vsprintf,这样就不需要自己分析了

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧