Skip to content

Latest commit

 

History

History
93 lines (73 loc) · 3.41 KB

op_constructor.md

File metadata and controls

93 lines (73 loc) · 3.41 KB

コンストラクタ

  • ios[meta header]
  • function[meta id-type]
  • std[meta namespace]
  • ios_base::failure[meta class]
explicit failure(const std::string& msg);                                            // (1) C++03 まで

explicit failure(const std::string& msg, const error_code& ec = io_errc::stream);    // (2) C++11 から

explicit failure(const char* msg, const error_code& ec = io_errc::stream);      // (3) C++11 から
  • error_code[link ../../../system_error/error_code.md]
  • io_errc[link ../../io_errc.md]

概要

ios_base::failure オブジェクトを構築する。

効果

  • (1) strcmp(what(), msg.c_str()) == 0 となる ios_base::failure オブジェクトを構築する。
  • (2)、(3) 引数 msgec を用いて基底クラスを構築して、ios_base::failure オブジェクトを構築する。

C++03 までの例

#include <iostream>

int main()
{
  std::ios_base::failure f("error message");
  std::cout << f.what() << std::endl;
}
  • failure[link ../failure.md]
  • std::ios_base[link ../../ios_base.md]
  • what()[link what.md]

出力

error message

C++11 からの例

#include <iostream>
#include <system_error>

int main()
{
  std::ios_base::failure f1("error message");
  std::cout << f1.what() << std::endl;
  std::ios_base::failure f2("error message", std::make_error_code(std::errc::no_such_file_or_directory));
  std::cout << f2.what() << std::endl;
}
  • failure[link ../failure.md]
  • std::make_error_code[link ../../../system_error/make_error_code.md]
  • std::errc[link ../../../system_error/errc.md]
  • std::ios_base[link ../../ios_base.md]
  • what[color ff0000]

出力例

error message: unspecified iostream_category error
error message: No such file or directory

バージョン

言語

  • C++98

処理系

  • Clang: 3.0 [mark verified], 3.1 [mark verified], 3.2 [mark verified], 3.3 [mark verified], 3.4 [mark verified], 3.5.0 [mark verified], 3.6.0 [mark verified], 3.7.0 [mark verified], 3.8.0 [mark verified]
  • GCC: 4.3.6 [mark verified], 4.4.7 [mark verified], 4.5.4 [mark verified], 4.6.4 [mark verified], 4.7.3 [mark verified], 4.8.1 [mark verified], 4.8.2 [mark verified], 4.9.0 [mark verified], 4.9.1 [mark verified], 4.9.2 [mark verified], 5.1.0 [mark verified], 5.2.0 [mark verified], 6.0.0 [mark verified]
  • ICC: ??
  • Visual C++: ??

備考

  • GCC 5.1.0 以降では、単に C++03 モードにしても strcmp(what(), msg.c_str()) == 0 にはならない。
    マクロ _GLIBCXX_USE_CXX11_ABI0に設定すれば完全に C++03 の挙動になる。
    クラスページのバージョン欄の備考も参照。
  • Clang では、C++03 モードでも strcmp(what(), msg.c_str()) == 0 にはならない。

参照