私たちは使用できることを知っています
perror()
C でエラーを出力します。これに代わるC++があるかどうか、またはこれ(したがってstdio.h)をプログラムに含める必要があるかどうか疑問に思っていました。私はできるだけ多くの C 関数を避けようとしています。
私たちは使用できることを知っています
perror()
C でエラーを出力します。これに代わるC++があるかどうか、またはこれ(したがってstdio.h)をプログラムに含める必要があるかどうか疑問に思っていました。私はできるだけ多くの C 関数を避けようとしています。
次のようなことができます。
std::cerr << strerror(errno) << std::endl;
それでも を呼び出すことstrerror
になるので、実際には 1 つの C 関数を別の関数に置き換えているだけです。OTOH、C と C++ の出力を混合する代わりに、ストリームを介して書き込むことができます。これは一般的には良いことです。少なくとも私の知る限り、C++ は代わりに機能するライブラリに何も追加しませんstrerror
( .std::string
strerror
boost::system_error::error_code
クラスを使用できます。
#include <boost/system/system_error.hpp>
#include <cerrno>
#include <iostream>
void
PrintError(
const std::string& message,
int error
)
{
std::cerr << message << ": " <<
boost::system::error_code(
error,
boost::system::get_system_category()
).message()
<< std::endl;
}
int
main()
{
PrintError( "something went wrong!", EINVAL );
return 0;
}
これは少し冗長であり、boost_systemライブラリをまだ使用していない場合はやややり過ぎです。