- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个类 MyException
,它扩展了 std::runtime_error
,异常消息具有 printf
语法。我想这样使用它:
int main()
{
int index = -1;
if (index < 0)
throw MyException("Bad index %d", index);
}
如何为 MyException
编写构造函数?
class MyException: public std::runtime_error
{
MyException(const char* format ...):
runtime_error(what?)
};
我假设我必须将 va_list
和对 vprintf
的调用放在某个地方,但我如何将其与初始化语法结合起来?
最佳答案
在 sprintf
中使用可变参数模板:
class MyException: public std::runtime_error {
char buf[200]; // One issue: what initial size of that?
template<class ... Args>
char* helper(Args ... args)
{
sprintf(buf, args...);
return buf;
}
public:
template<class ... Args>
MyException(Args ... args):
std::runtime_error( helper(args...) )
{
}
};
关于c++ - 如何在带有初始值设定项的构造函数中使用 vprintf/cstdarg 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57841769/
我有一个围绕 printf 函数的包装器: enum Color { Black, White }; void my_printf(char *fmt, ...) { char big
我有一个代码可以从设备接收 32 位值的二进制数组并使用 vsprintf 打印它们,如下所示: void print_stuff(int32_t *p, const char *format) {
这个问题在这里已经有了答案: Technically, how do variadic functions work? How does printf work? (2 个答案) 关闭 8 年前。
我的程序中出现了段错误,并且能够在这个简单的示例中可靠地重现它: #include #include #include // if I remove at least one of the ar
这段代码有什么问题? #include #include void myprintf(const char * format, ...) __printflike(1, 2); int main(
我需要一些非常相似但有所不同的东西。 #include #include void WriteFormatted ( const char * format, ... ) { va_list
我想创建一个类 MyException,它扩展了 std::runtime_error,异常消息具有 printf 语法。我想这样使用它: int main() { int index = -
我正在尝试编写 printf 的变体,其中正在打印的项目和正在打印的格式是调用中的相邻参数,例如... print(2, "%s", "hello", "%.5u", 25); 我研究了 var ar
我无法理解以下代码: With no decimals: %1\$u",array($number)); ?> 浏览器输出: With 2 decimals: 123.00 With no decim
我是一名二年级的计算机专业学生,在编程方面还没有我希望的那么精通。我们今年在 C 中使用 OS161。 对于这个问题,我应该编写一个 C 程序,它可以像参数一样接受命令并将它们回显。好的,没问题。我以
好的,所以 printf/sprint/vprintf 都接受某种类型说明符语法 %[num][type]。 (http://us2.php.net/sprintf 参见示例 3 和 4)其中 num
我明白printf、fprintf、sprintf等函数和vprintf的区别,vfprintf、vsprintf 等函数与它们处理函数参数的方式有关。但具体如何?真的有任何理由在另一个上使用一个吗?
我正在编写一些非常基本的代码,但我遇到了一个错误,我不确定它为什么会发生。 我的代码是这样的: char* path = getenv("PATH"); if(path != NULL) {
我对在 C 语言中使用 function(specifier, ...); 风格的可变参数函数感兴趣,除了花哨的打印或指定格式的读出之外的其他目的。 示例可能包括自定义数据库列、将可变参数传递给可以根
我是一名优秀的程序员,十分优秀!