Я использую нестандартную функцию 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()
в виде строки?
warn
? Это, конечно, не стандартная функция C++, поэтому, возможно, документация API, из которого вы ее используете, поможет больше... - person PlasmaHH   schedule 26.02.2013err(3)
— около дюжины функций имеют дело с форматированными сообщениями об ошибках. - person Blacklight Shining   schedule 26.02.2013err(3)
. Похоже, это функция BSD. В любом случае, ответ то, что вы уже написали. - person Lightness Races in Orbit   schedule 26.02.2013