std:: strerror
|
ヘッダで定義
<cstring>
|
||
|
char
*
strerror
(
int
errnum
)
;
|
||
システムエラーコード errnum のテキスト記述へのポインタを返します。これは std::perror() によって表示される説明と同一です。
errnum
は通常
errno
変数から取得されますが、この関数は
int
型の任意の値を受け入れます。文字列の内容はロケール固有です。
返される文字列はプログラムによって変更されてはならないが、後続の
strerror
関数の呼び出しによって上書きされる可能性がある。
strerror
はスレッドセーフである必要はない。実装によっては、静的読み取り専用文字列リテラルへの異なるポインタを返す場合もあれば、静的なバッファ内の同じポインタを繰り返し返す場合もある。このバッファには
strerror
が文字列を格納する。
目次 |
パラメータ
| errnum | - | エラーコードを参照する整数値 |
戻り値
errno エラーコード errnum に対応する、null終端バイト文字列へのポインタ。
注記
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ドキュメント
for
strerror
|
|