warn()
如果无法打开文件,我正在使用非标准函数(由 BSD 提供)输出错误消息,如下所示:
std::string path = get_path() ;
std::ifstream file(path) ;
if (file.is_open()) { /* do something */ }
else {
warn("%s", path.c_str()) ;
// uses errno to figure out what the error was and outputs it nicely along with the filename
}
这对于输出它来说非常好,但是如果我想在其他地方使用整个字符串,除了打印它怎么办?这些warn()
函数似乎没有将错误写入字符串的形式。我试过自己动手,但相比之下似乎非常麻烦(除了没有得到程序的名称):
this->foo((boost::format("%s: %s") % path % strerror(errno)).str()) ;
那么如何将warn()
's 输出作为字符串呢?