在 C++11 中,是否有一种简单的(甚至更好的内置)方法来执行此类操作以在异常中执行 printf 样式的字符串?
throw std::runtime_error( "Failed to open '%s' [%d]: %s",
filename, errno, strerror(errno) );
Run Code Online (Sandbox Code Playgroud)
我知道我可以snprintf给一个 `char []' 然后将结果传递给一个异常构造函数,或者先转换为 std::string 。
只是想知道 C++11 是否提供更好/更简单的东西。
从 C++11 开始,您可以从以下构造异常std::string:
std::runtime_error("Failed to open " + std::string(filename) + std::to_string(errno));
Run Code Online (Sandbox Code Playgroud)
这有一个轻微的缺点,即 的构造函数std::string可能throw并因此终止您的程序。但是,这应该只在处理某种“内存不足”异常时起作用。
| 归档时间: |
|
| 查看次数: |
3306 次 |
| 最近记录: |