目前在改一个非常legacy的专案,Log function signature基本上写死了没办法改 :
Log(const char* type, const char* client, const char* log);
以前看他们都是写成这样
char log[48];
sprintf(log, "This is a PEN : %s PINEAPPLE!");
Log(TYPE, CLIENT, log);
这写法显然是有问题的,但是这个VC6等级的编译器又不支援sprintf_n
更不用说这其实挺麻烦的
所以后期我就把它改写成这样
stringstream log;
log << "This is a PEN : " << pen << " PINEAPPLE!";
Log(TYPE, CLIENT, log.str().c_str());
但是显然这还是有点麻烦
自己是写了一个ostream拼贴物件让他看起来像是这样
包含了一个operator const char*()
Log(TYPE, CLIENT, log << "This is a PEN : " << pen << " PINEAPPLE!");
来让他能够串起来,让他能够吃大多数的变量型别
问题来了,有没有std函数能满足这个需求?
Log希望能让他们写的方便一点,不然他们一个个都不想Log了 -o-||