名前空間
変種
操作

std::strerror

提供: cppreference.com
< cpp‎ | string‎ | byte
ヘッダ <cstring> で定義
char* strerror( int errnum );

システムのエラーコード errnum の説明テキストを指すポインタを返します。 std::perror() によって表示されるであろう説明と同一です。

errnum は通常、 errno 変数から取得しますが、この関数は int 型のあらゆる値を受理します。 文字列の内容はロケール固有です。

返された文字列はプログラムから変更してはなりませんが、後の strerror 関数の呼び出しによって上書きされる可能性があります。 strerror はスレッドセーフであることは要求されません。 処理系は静的な読み込み専用の文字列リテラルを指す異なるポインタを返すかもしれませんし、 strerror が文字列を置く静的バッファを指す同じポインタを毎回返すかもしれません。

目次

[編集] 引数

errnum - エラーコードを表す整数値

[編集] 戻り値

errno のエラーコード errnum に対応するヌル終端バイト文字列を指すポインタ。

[編集] ノート

POSIX は strerror の後の呼び出しが前の呼び出しによって返されたポインタ値を無効化することを許しています。 また、 LC_MESSAGES ロケールファセットがこれらのメッセージの内容を制御することも��定しています。

[編集]

#include <iostream>
#include <cmath>
#include <cerrno>
#include <cstring>
#include <clocale>
 
int main()
{
    double not_a_number = std::log(-1.0);
    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';
    }
}

出力例:

log(-1) failed: Numerical argument out of domain
Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches

[編集] 関連項目

現在のエラーに対応する文字列を stderr に出力します
(関数) [edit]
標準の POSIX 互換のエラー状況のためのマクロ
(マクロ定数) [edit]