C++での最後のエラーメッセージを文字列に変換する方法


  1. std::strerror関数を使用する方法: この方法では、std::strerror関数を使ってerrno変数に格納されたエラーコードを文字列に変換します。以下は例です。

    #include <cstring>
    #include <iostream>
    int main() {
       // エラーコードを設定する例
       FILE* file = fopen("nonexistent_file.txt", "r");
       if (file == nullptr) {
           std::cout << "エラーメッセージ: " << std::strerror(errno) << std::endl;
       }
       return 0;
    }

    上記の例では、fopen関数が失敗した場合にエラーメッセージを表示しています。

  2. std::exceptionクラスを使用する方法: C++の標準例外クラスであるstd::exceptionを継承したクラスを作成し、what()メソッドをオーバーライドすることで、エラーメッセージを取得できます。

    #include <exception>
    #include <iostream>
    class MyException : public std::exception {
    public:
       const char* what() const noexcept override {
           return "エラーメッセージ";
       }
    };
    int main() {
       try {
           throw MyException();
       } catch (const std::exception& e) {
           std::cout << "エラーメッセージ: " << e.what() << std::endl;
       }
       return 0;
    }

    上記の例では、MyExceptionクラスのオブジェクトをスローし、catchブロックでエラーメッセージを表示しています。

これらはC++で最後のエラーメッセージを文字列に変換するための一般的な方法です。どちらの方法もエラーメッセージの取得と表示に役立ちます。エラーメッセージの内容や使用するライブラリによっても異なる方法がありますので、具体的なケースに応じて適切な方法を選択してください。