C++

C++_例外メッセージを受け取る

exception クラスの what を使う。 try { } catch (std::exception & e) { std::cout << e.what() << std::endl; } こちらから。 https://cpprefjp.github.io/reference/exception/exception.html 以上。 Debug で動かしてコンソールにメッセージが出力され…

C++_std::stringstream とは

書式付の入出力に使用する。 std::string は0 埋め・小数点付きなど C# での string str = ${50.123:f2} が出来ない。 ex ) std::stringstream ss; ss << std::setw(3) << std::setfill('0') << 5; //005 auto str = ss.str(); //std::string に変換 setw ( …

C++_値クラス ( 値オブジェクト ) メモ程度

「コンストラクタに引数を渡して初期化」記事の Memo の箇所を掘り下げたかったが、結構重いのでさらっと調べ。よく分からん。 参照オブジェクト new したら必ず delete 。削除し忘れや、削除の重複など注意しなければならない。 値オブジェクト 次のような…

C++_operator= とは何か 03

オーバーロードする時にも代入を意味する機能にするのが良い。 ex ) operator= を使ったコード class CHoge { private: int _hI; public: int GetInteger() { return _hI; } CHoge & operator=(int i) { _hI = i; return *this; // 自分自身への参照型 Choge…

C++_operator= とは何か 02

演算子を関数名として使いたい場合、そのままだと使えないので operator キーワードをつける。つまり「 operator 演算子」は関数名。ということかと。 オペレータとは、関数名が C++ の演算子であるような関数のこと。operator は演算子に他の意味を持たせる…

C++_コピーコンストラクタとは

operator= の意味が不明なので、コピーコンストラクタを調べればわかるかと思ったが結局分からず。コピーコンストラクタもよく分からん。なんで↓問題が回避できるのか不明。 コピーコンストラクタ C ( const C & ); C &operator=( const C & ); オブジェクト…

C++_operator= とは何か 01

調べても不明。コピーコンストラクタという単語の意味も調べる必要が ?operator や T operator=(~ ) というコードが意味不明だった。 C ( const C & ); C &operator=( const C & ); 代入演算子のオーバーロード。 operator= はメンバ関数の名前に過ぎない。…

C++_小数点桁数を指定する書式設定

前に sprintf を使ったがもっといいのがあった。 std::string だと書式指定はできない。替わりになるものが std::stringstream 。 double num = 112.14328; std::stringstream numStr; numStr << std::fixed << std::setprecision(2) << num; //112.14 かな…

OpnCV _ C++ _引数の & と const のありなし

型の前の & は参照を示す宣言子。 参照したサイトでは cv::Mat 型だが、他の型も挙動は同じ ? かと。 以下の違い。 cv::Matconst cv::Matcv::Mat&const cv::Mat& 前知識 Memo -- cv::Mat のコピー -- cv::Mat は代入演算子を使うと、浅いコピーが行われコピ…

C++_コンストラクタに引数を渡して初期化

分からずに書いてるので調べた。 Hoge クラスのメンバ変数( 定数 ) _id を 引数 i で初期化。 Hoge::HOge( int i ) : _id ( i ) { メンバが複数ある場合はコンマ , で区切る。 ex ) //Hoge.h const int fuga; //001 //Hoge.cpp Hoge::Hoge( int getId ) { fu…

C++_ファイル出力のメモ

書き込み std::ofstream ofs("./ファイル名"); ファイルがなければ作成。既存のファイル内容は開いた時点で破棄され、上書きになる。※ifstream は指定したファイルが無ければエラーとなる。 --Memo-- 適当に拡張子を付けて ( .hoge ) 上書きテストしたら、「…

C++/CLI_宣言のアスタリスク * と ハット ^

分からなくなった。 * ポインタ型 C++ では、new でインスタンスを作成し、アスタリスク * がついたポインタ変数に格納。ポインタが格納。 ^ ハンドル型 C++/CLI ではインスタンスを「gcnew」で作成し、ハット ^ がついたハンドル変数に格納。 これによりガ…

C++_assert とは

C++/CLI でも C#++ でも使えるもよう。assert:主張する。 assert は、その関数を呼び出すユーザに対して要件を表明できる。 ex )「関数の引数がある範囲内の値でなければならない」→ assert ( 10 < a < 100 ) 「ある状態でこの関数を呼び出してはならない」…

C++_参照型とポインタ

ごちゃになってきたので再度調べ。 ポインタ アドレスを記憶する変数。アドレスを直接扱う。 参照型 C++ で使われる。ポインタ型よりも制約が強く安全に使える。裏ではポインタの受け渡し。 ・参照型の使い方 // 普通のdouble 型 double a; // x は a を参照…

C++_アンパサンドの意味

& ( アンパサンド ) には 2 つの意味がある! &変数 → アドレス演算子型名& → 参照型を示す宣言子 ポインタでの & ( アドレス演算子 ) メモリアドレスを得る演算子。ポインタとセット。参照型で利用するものとは全く別。 int hoge = 10; int* fuga = &hoge …

C++_ std::setprecision と std::fixed ( 桁数指定 )

桁数指定の時に使用するが、分からないまま使用しているので調べた。ほぼコペ。 ※ #include <iomanip> が必要。 std::setprecision 浮動小数点数を出力する精度を設定するマニピュレータ。 マニピュレータ:ストリームに対して、何らかの操作を行うオブジェクト。スト</iomanip>…

C++_Enter キーを押下したら処理が続行

Enter キー を押すまでは待機状態にしたい。 getchar ( ) を書くだけ。 // 処理 1 getchar(); // ここで入力待ち // 処理 2 Enter キーが押下されたら処理 2 が走る getchar() はその名通り文字を受け取る関数。Enter ( 改行 ) が押されて初めて入力した文字…

C++_ファイル入出力の基本 ( 出力 )

出力ファイルストリーム ( 書き込み ) について。 std::ofstream でファイルへ出力。 #include <fstream> が必要。 std::ofstream ofs( "./ファイル名" ); if ( ! ofs ) { // ファイルオープン失敗時の処理 } ofs << "Hey" << std::endl; 指定したファイルに Hey が書</fstream>…

C++_ファイル入出力 ( 入力 ) >> 演算子使用

ファイル読込み。getline( ) を使わないコード。 #include <fstream> 必要。 ex ) 読みやすいように半角スペース入れて箇所あり。 std::ifstream fS( "./hoge/text.txt"); if( ! fS ) { return; } int a, b; while ( ! ifsT.eof() ) { fs >> a >> b; } デリミタがスペ</fstream>…

C++_小数点桁数を指定して、stringに変換

sprintf を使う。 std::stringstream 使うともっと楽。 ex ) double num = 112.14328; char str[20]; std::sprintf(str, "%.2f", num); コンソールに出力する場合は、 printf("%.2f", num); str は、112.14 となる。num が11.14328 の場合は 11.14 となる。 …

C++_size_t から int への変換

未解決 size_t で取得した値を、配列のインデックスとして使ったら以下のエラー。 warning C4267:'引数': 'size_t' から 'int' に変換しました。データが失われているかもしれません。 これは、size_t から サイズの小さな型への変換を検出した時に出るエラ…

C++_cout の << について

cout の << は何なのか。シフト演算子ではないのかと疑問だった。 出力演算子 という。 std::cout << "Hey" << std::endl; std::coutconsole out :標準出力 ( = コンソール出力) std::endlend of line :改行 C では << は 左シフト、 >> は 右シフト。C++…

C++_ #include 時の < > と " "

参照サイト ( もとい引用 ) は C だが、同じだろと思い C++ カテゴリにした。 ヘッダファイルを探すときの優先順位に関係している。 < > : Windows 標準のヘッダファイルをインクルードする時。 " " : 自分たちで作ったユーザヘッダファイルをインクルード…

C++_コンテナとイテレータ

メモ程度。 コンテナクラスとは 入れ物のこと。一つのコンテナに入る要素の型は全て同一。 コンテナクラスはたいてい begin(), end() メンバ関数を持ち、コンテナクラスが保持している要素へのイテレータを返す。 イテレータを介して、コンテナが保持してい…

C++_ iterator および distance のメモ

イテレータがよく分からなかったので Debug で中身を見ただけ。 ※ #include <vector> 必要。 std::vector<int> x;x.push_back(7);x.push_back(8);x.push_back(1);x.push_back(2); std::vector<int>::iterator iter = std::max_element(x.begin(), x.end()); //中身は { 8 } int</int></int></vector>…

C++_ファイルへの書き込み

std::ofstream を使う。 std::ofstream の定義に飛ぶと basic_ofstream と書いてあったので調べると、メンバ関数には is_opne などがある。が、よく分からないので後回し。 ex ) 0 ~ 9 の数値を書き出す。 std::ofstream outputfile("./test.txt"); for (in…

C++_デバッグでのみ発生するエラー

0xC0000005: 場所 hogahoga の読み取り中にアクセス違反が発生しました 上 記のエラーがDebug では発生して処理が止まるが、Release では何事もなく処理が進む。無視していいのかなと期待を抱いて調べたが無視していけないヤツだった。 これは、 即座に対処…

C++_ 変数の中身を確認 ( コンソール出力 )

C++

※ 環境は Visual Studio 。出力ウィンドウに表示する。 std::cout << str << std::endl; str は変数。ちなみに " Hey!!! " と書くと " " の内容が出力。console out の略らしい。 [ ネイティブコードのデバッグを有効にする ] のチェックが外れている必要が…

C++_ 文字置換 ( ソース解読 )

前書いたまとめ。 hoga を fuga に変更。 std::string str = "今日は hoga だった。明日も hoga だ。"; std::string from = "hoga"; std::string to = "fuga"; std::string::size_type pos(str.find(from)); while (pos != std::string::npos) { str.replace…

C++_ std::string::replace

文字、文字列を置換する。 どこを置換するのかは位置を指定する必要があるので、find 関数 を用いる。 戻り値 置換が適用された文字列オペランド。自身のオブジェクトの参照。置換した文字列が自身の変数に返ってくる? オペランド:式に登場する数値や変数…