std::strerror
From cppreference.com
| ヘッダー <cstring> で定義 |
||
| char* strerror( int errnum ); |
||
errnum システムエラーコードのテキストによる説明へのポインタを返します。これは、std::perror() によって表示される説明と同じです。
errnum は通常 errno 変数から取得されますが、この関数は int 型の任意の値を引数として受け取ります。文字列の内容はロケールに依存します。
返された文字列はプログラムによって変更されてはなりませんが、後続の strerror 関数呼び出しによって上書きされる可能性があります。strerror はスレッドセーフであることが要求されていません。実装によっては、静的な読み取り専用文字列リテラルへの異なるポインタを返したり、strerror が文字列を格納する静的バッファを指す同じポインタを繰り返し返したりする場合があります。
目次 |
[編集] パラメータ
| errnum | - | エラーコードを参照する整数値 |
[編集] 戻り値
errno エラーコード errnum に対応する、ヌル終端のバイト文字列へのポインタ。
[編集] 注記
POSIX では、後続の strerror 呼び出しが以前の呼び出しによって返されたポインタ値を無効にすることを許可しています。また、これらのメッセージの内容を制御するのは LC_MESSAGES ロケールファセットであることを規定しています。
POSIX には、スレッドセーフなバージョンである strerror_r が定義されています。Glibc は 互換性のないバージョンを定義しています。
[編集] 例
このコードを実行
#include <cerrno> #include <clocale> #include <cmath> #include <cstring> #include <iostream> int main() { const double not_a_number = std::log(-1.0); std::cout << not_a_number << '\n'; if (errno == EDOM) { std::cout << "log(-1) failed: " << std::strerror(errno) << '\n'; std::setlocale(LC_MESSAGES, "de_DE.utf8"); std::cout << "Or, in German, " << std::strerror(errno) << '\n'; } }
実行結果の例
nan log(-1) failed: Numerical argument out of domain Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches
[編集] 関連項目
| 現在のエラーに対応する文字列を stderr に表示する (関数) | |
| 標準的なPOSIX互換のエラー条件のためのマクロ (マクロ定数) | |
| C 言語のドキュメント (strerror)
| |