当前位置: 技术问答>linux和unix
C++ 如何实现CString.format()的功能
来源: 互联网 发布时间:2016-04-10
本文导语: CString strIP; strIP.Format(("%s",temp); 不用能CString,程序需要在linux下面跑,怎么用c++去实现format的功能呀? | 在底层用vsprintf函数就可以,你上面再写一个可变参数函数就可以了,关于可变能数函数的写法...
CString strIP;
strIP.Format(("%s",temp);
不用能CString,程序需要在linux下面跑,怎么用c++去实现format的功能呀?
|
在底层用vsprintf函数就可以,你上面再写一个可变参数函数就可以了,关于可变能数函数的写法,可以参考我的blog文:http://blog.csdn.net/linyt/archive/2008/04/02/2243605.aspx
你可以这样来写
size_t Class::Format(const char* fmt, ...)
{
char line[MAX_LINE_LEN];
va_list vap;
va_start(vap, fmt);
size_t ret = vsnprintf(line, MAX_LINE_LEN, vap);
va_end(vap);
return ret;
}
你可以这样来写
size_t Class::Format(const char* fmt, ...)
{
char line[MAX_LINE_LEN];
va_list vap;
va_start(vap, fmt);
size_t ret = vsnprintf(line, MAX_LINE_LEN, vap);
va_end(vap);
return ret;
}
|
I/O流可以完成此格式化任务。
stringstream不错;效率不是瓶颈的情况下,倒是个安全和易维护的东西。
stringstream不错;效率不是瓶颈的情况下,倒是个安全和易维护的东西。
|
string s;
sprintf(s, "%s%d","ok",10);
这样是不行的,sprintf是c语言性质的函数,c语言里面根本没有string类型,你要这样:
char * s = (char *) malloc(10);
sprintf(s, "%s%d","ok",10);
sprintf(s, "%s%d","ok",10);
这样是不行的,sprintf是c语言性质的函数,c语言里面根本没有string类型,你要这样:
char * s = (char *) malloc(10);
sprintf(s, "%s%d","ok",10);