作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个类,它包含一个“错误”函数,它将格式化一些文本。我想接受可变数量的参数,然后使用 printf 对其进行格式化。
示例:
class MyClass
{
public:
void Error(const char* format, ...);
};
Error 方法应该接受参数,调用 printf/sprintf 对其进行格式化,然后对其进行处理。我不想自己编写所有格式,因此尝试弄清楚如何使用现有格式是有意义的。
最佳答案
void Error(const char* format, ...)
{
va_list argptr;
va_start(argptr, format);
vfprintf(stderr, format, argptr);
va_end(argptr);
}
如果您想在显示字符串之前对其进行操作,并且确实需要先将其存储在缓冲区中,请使用 vsnprintf
而不是 vsprintf
。 vsnprintf
将防止意外的缓冲区溢出错误。
关于c++ - 如何将可变数量的参数传递给 printf/sprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056411/
我是一名优秀的程序员,十分优秀!