名稱空間
變體
操作

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 區域設定刻面控制這些訊息的內容。

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