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
| |