【发布时间】:2019-03-07 09:54:42
【问题描述】:
我有一个使用“...”参数并使用 vsprintf_s 创建最终输出字符串的日志记录函数
它工作正常,只是我总是必须使用 c_str() 来打印字符串
起初我以为这不是问题,但是在每个字符串变量之后添加所有这些 .c_str() 很痛苦,而我一直忘记它们
虽然也许 C++ 大师可以启发我解决这个问题,但有没有办法让我的日志记录功能自己处理这个问题?
void Logger::print(const std::string fmt, ...)
{
va_list args;
int len;
char * buffer;
va_start(args, fmt);
len = _vscprintf(fmt.c_str(), args)+1;
buffer = (char*)malloc(len * sizeof(char));
vsprintf_s(buffer, len, fmt.c_str(), args);
va_end(args);
std::cout << buffer << std::endl;
free(buffer);
}
谢谢
【问题讨论】:
-
我不是在谈论格式,而是参数显然,因为我提到我必须添加 .c_str()
-
来点大胆而新鲜的东西怎么样,比如根本不使用
printf系列函数? -
哈哈,一天中最好的一个:-)