Используйте strerror (), чтобы получить строку с ошибкой. Установите errno на 0 перед вашим вызовом и проверьте его после. Это позволяет избежать смущающих сообщений, таких как печально известная «Не пишущая машинка», от доброкачественных вызовов, таких как printf, которые также могут устанавливать errno.
#include <cerrno>
#include <cmath>
#include <cstring>
#include <string>
#include <iostream>
#include <ostream>
using namespace std;
int main()
{
errno = 0;
sqrt(-1.0);
if (errno != 0) {
string s = strerror(errno);
cout << s << endl;
}
}