C++

basic_string(basic_string<char>&を引数に取るコピーコンストラクタ)

C++

今度は、basic_string&を引数に取るコピーコンストラクタを追加する。basic_string::コンストラクタ - cpprefjp C++日本語リファレンスbasic_string.cppで、とすると、 こうなる。こうなる。Sample/cpp/basic_string/basic_string_2/src/basic_string at mas…

basic_string(文字列を引数に取るコピーコンストラクタ)

C++

basic_stringは文字列で初期化できるコピーコンストラクタを持つ。basic_string::コンストラクタ - cpprefjp C++日本語リファレンスbasic_string.cppで、とすると、 "ABCDE"で初期化できる。"ABCDE"で初期化できる。Sample/cpp/basic_string/basic_string_1/…

basic_string

C++

改めて、basic_stringについて扱う。 まずは、コンストラクタ。basic_string::コンストラクタ - cpprefjp C++日本語リファレンスいっぱいあるけど、C++03で引数なしだと、(1)の、 basic_string(); ではなくて、(これはC++14の場合らしい) explicit basic_str…

basic_istream::sentry

C++

basic_istream::sentryは、入力処理共通の前処理・後処理を実行するためのクラス。basic_istream::sentry - cpprefjp C++日本語リファレンスbasic_istream.cppで、とすると、 こうなる。こうなる。Sample/cpp/basic_istream/sentry/src/basic_istream at mas…

basic_ostream::sentry

C++

basic_ostream::sentryは、出力処理共通の前処理・後処理を実行するためのクラス。basic_ostream::sentry - cpprefjp C++日本語リファレンス C++ - std::basic_ostream<CharT,Traits>::sentry - C++標準ライブラリのbasic_ostreamクラスのsentryオブジェクトは、出力ストリ</chart,traits>…

basic_ios::init

C++

basic_istreamやbasic_ostreamは、コンストラクタの中でbasic_ios::initを呼んで初期化している。basic_ios::init - cpprefjp C++日本語リファレンス新たにカスタム入力ストリームクラスを定義し、そこにinitメンバ関数を追加、そこでbasic_ios::initを呼ぶ…

basic_fstream::rdbuf

C++

basic_fstreamにもrdbufはある。basic_fstream::rdbuf - cpprefjp C++日本語リファレンス読み書き両方できる。 basic_fstream.cppで、こう書く。 123を読みこんで表示し、そこに456を書き込む。123を読みこんで表示し、そこに456を書き込む。 後ろに追記され…

basic_ifstream::rdbuf

C++

basic_ifstreamにも、rdbufはある。basic_ifstream::rdbuf - cpprefjp C++日本語リファレンスbasic_ifstream.cppで、"test.txt"を開いたifsのバッファを取得し、別のストリームであるisのバッファとしてコンストラクタからセットする。 isのバッファはifsの…

basic_ofstream::rdbuf

C++

basic_ofstreamにも、rdbufはある。basic_ofstream::rdbuf - cpprefjp C++日本語リファレンスbasic_ios::rdbufと違い、バッファの取得のみの機能となっている。 basic_ofstream.cppで、"test.txt"を開いたofsのバッファを取得し、別のストリームであるosのバ…

basic_ios::tie

C++

basic_ios::tieは、同期する出力ストリームを設定または取得する。basic_ios::tie - cpprefjp C++日本語リファレンスbasic_ios.cppで、 // ヘッダのインクルード #include <iostream> // C++標準入出力 #include <fstream> // C++ファイル入出力 #include <string> // std::string // ma</string></fstream></iostream>…

basic_ofstream

C++

basic_ofstreamで、ファイルへの書き込みができる。basic_ofstream - cpprefjp C++日本語リファレンスbasic_ofstream.cppで、コンストラクタで"test.txt"を開いて、出力演算子で"ABCDE"を書き込み。 "ABCDE"を書き込めた。"ABCDE"を書き込めた。Sample/cpp/b…

basic_iostream

C++

basic_iostreamは、入出力両方を扱うクラス。basic_iostream - cpprefjp C++日本語リファレンスbasic_istreamとbasic_ostreamの両方を継承しており、これの派生クラスがファイルを扱うbasic_fstream。 basic_iostream.cppで、こうしてみた。 basic_iostream…

basic_istream::get(char型で1文字取得)

C++

basic_istream::getでの1文字取得は、intの戻り値で返ってくるパターンはやったが、charの引数に参照渡しするパターンはまだだった。basic_istream::get - cpprefjp C++日本語リファレンスbasic_istream.cppで、独自のbasic_istream<char>オブジェクトiscで標準入</char>…

basic_ifstream

C++

ファイル入力に限って言えば、basic_ifstreamを使って読み込みも出来る。basic_ifstream - cpprefjp C++日本語リファレンスbasic_ifstream.cppで、と書く。 $ vi basic_ifstream.cpp $ vi test.txt $ cat test.txt ABCDE $ g++ basic_ifstream.cpp -o basic_…

basic_ios::rdbuf

C++

basic_ios::rdbufで、そのストリームのストリームバッファオブジェクトポインタを取得する。basic_ios::rdbuf - cpprefjp C++日本語リファレンス basic_streambuf::sputn - C++ Referencestringstreamオブジェクトssを用意し、ss.rdbufでバッファポインタsbu…

basic_filebuf

C++

basic_filebufは、basic_streambufをファイル用に継承したクラス。 バッファを管理するのだが、openやis_openを持っている。std::basic_filebuf - cppreference.comデフォルトの引数無しコンストラクタで生成できるが、その場合は当然ファイルに紐付けられて…

basic_streambuf::setg

C++

basic_streambufのsetpが書き込み位置の情報をセットするものだとすると、setgは読み込み位置の情報をセットするもの。https://ja.cppreference.com/w/cpp/io/basic_streambuf/setg カスタムバッファsetgには、バッファの最初の位置、現在位置、最後の位置を…

basic_streambuf::setp

C++

basic_iostreamなどの入出力ストリーム系のクラスにおいて、バッファはbasic_streambufが管理している。 setpで、バッファにおける書き込み開始位置と書き込み終了位置を指定すると、書き込みの度にbasic_streambufの中で、アクセス位置を変更してくれる。st…

basic_stringstream

C++

以前やったistringstreamとostringstreamの両方の機能を持っているのが、stringstreamであり正体はbasic_stringstream。std::basic_stringstream - cppreference.com複雑だけど、basic_istringstreamとbasic_ostringstreamから継承してるわけではない。 これ…

basic_fstream::is_open

C++

basic_fstream::is_openで、ファイルが開いているか確認する。basic_fstream::is_open - cpprefjp C++日本語リファレンスコンストラクタでtest.txtを開いて、is_openでチェック、読み込んだら、明示的にcloseで閉じて、またis_openでチェック。 $ vi basic_f…

basic_fstream::open

C++

今回は、basic_fstreamのopenでファイルを開く。basic_fstream::open - cpprefjp C++日本語リファレンスios_base::inとios_base::outがデフォルト引数なので、読み書き両方できる。とはいえ、確実に保存しておきたいので閉じている。 $ vi basic_fstream.cpp…

priority_queue

C++

priority_queueは、優先度付きキューとも呼ばれ、指定したロジックによって優先順に要素を取り出せる。priority_queue - cpprefjp C++日本語リファレンス適当に追加しても、値の降順や昇順に取り出すことが出来る。デフォルトは降順で先頭のpque.topに出てく…

basic_fstream

C++

basic_fstreamは、高水準ファイル入出力クラスの基本となるもので、fstreamはこれのchar版。basic_fstream - cpprefjp C++日本語リファレンス std::basic_fstream - cppreference.comファイル入出力と標準入出力の継承関係は結構わかりにくいけど、入出力ラ…

allocator

C++

allocatorは、メモリの確保と解放を行うクラステンプレート。allocator - cpprefjp C++日本語リファレンス アロケータ | Programming Place Plus C++編【標準ライブラリ】 第32章basic_stringなどに、独自のchar_traitsを指定したように、独自のallocator…

char_traits

C++

char_traitsは、文字や文字列の操作を抽象化したクラステンプレートで、指定された文字の種類で動作を変えることができ、basic_stringにこれの派生クラスを渡すことで、独自の処理に切り替えることが出来る。char_traits - cpprefjp C++日本語リファレンス …

ios_base::fmtflags

C++

取得するほうのios_base::flagsの戻り値の型は、ios_base::fmtflagsであり、これは各処理系の実装にもよるが大抵はビットマスクの列挙型である。ios_base::fmtflags - cpprefjp C++日本語リファレンスどこにあるか調べてみた。/usr/includeの中/usr/include…

ios_base::flags

C++

ストリームの現在の書式フラグを取得するには、ios_base::flagsを使う。ios_base::flags - cpprefjp C++日本語リファレンスstd::coutの書式フラグを取得する。実行すると、 $ vi ios_base.cpp $ g++ ios_base.cpp -o ios_base $ ./ios_base std::cout.flags(…

getline

C++

実は、basic_stringの非メンバ関数に、もう一つのgetlineがある。getline - cpprefjp C++日本語リファレンスstringに対応しており、非メンバなので、"std::getline"として呼び出すだけである。stringなので、バッファ上限は不要。 $ ls getline getline.cpp …

basic_istream::getline

C++

basic_istream::getlineは、1行ごとに指定のバッファに読み込む。basic_istream::getline - cpprefjp C++日本語リファレンスよく見ると、char型などの文字配列のバッファには対応してるが、stringオブジェクトには対応してない模様。 となると、バッファを超…

basic_istream::tellg

C++

basic_istream::tellgは、ストリームの現在の読み取り位置を取得する。basic_istream::tellg - cpprefjp C++日本語リファレンス前回のプログラムで、basic_istream::getで読み込む前、読み込んだ後、の位置を確認してみる。 $ vi basic_istream.cpp $ g++ ba…