繁体   English   中英

具有printf样式字符串的C ++异常类?

[英]C++ exception class with printf style string?

在C ++ 11中,是否有一种简单的(甚至更好的内置)方式来执行此类操作以在异常中执行printf样式的字符串?

throw std::runtime_error( "Failed to open '%s' [%d]: %s", 
         filename, errno, strerror(errno) );

我知道我可以将snprintf传递给'char []',然后将结果传递给异常构造函数,或者先不转换为std :: string。

只是想知道C ++ 11是否可以提供更好/更简单的功能。

从C ++ 11开始,您可以从std::string构造异常:

std::runtime_error("Failed to open " + std::string(filename) + std::to_string(errno));

这有一个小缺点,即std::string的构造函数可能会throw并因此终止程序。 但是,这仅在处理某种“内存不足”异常时才起作用。

如果您只是在谈论创建格式化字符串,则可以将串联与std::to_string

throw std::runtime_error(std::string("Failed to open ") + filename +  "[" + std::to_string(errno) + "]: " + strerror(errno));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM