std::strerror
來自 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 文件 for strerror
|