C++

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…

basic_istream::get(文字列の取得)

C++

basic_istream::getには、文字列を取得できるオーバーロードメンバ関数がある。basic_istream::get - cpprefjp C++日本語リファレンスこれで、 $ cat test.txt ABC DEF GHI$catでこのように見えるテキストファイルを行文字列ごとに取得できるか試してみる。…

basic_istream::readsome

C++

basic_istream::readsomeは、指定された文字数以下の文字列を入力ストリームから読み取る。basic_istream::readsome - cpprefjp C++日本語リファレンスreadは文字数ちょうどなので、文字数に達しなかった場合、EOFやfailとなったが、こちらはそうならない。…

istringstream

C++

入力用のistringstreamにおいて、入力演算子を使って、スペース区切りの文字列を、各トークン毎に変数に振り分けることができる。basic_istringstream - cpprefjp C++日本語リファレンスistringstreamのissのコンストラクタに"ABC 123 0.456"を指定。 文字列…

ostringstream

C++

文字列ストリームについては、strstreamが非推奨のため、現在ではstringstreamを使うのが一般的。 今回は、出力用のostringstreamで、簡単な出力の仕方を扱う。std::basic_ostringstream - cppreference.comostringstreamのossは、コンストラクタでバッファ…

strstream::str

C++

strstreamで紐付けられたバッファにアクセスするには、メンバ関数str()を使う。std::strstream::str - cppreference.com今回は、紐付けたbufに続いて、str()で取得した文字列も出力する。これで実行すると、 $ vi strstream.cpp $ g++ strstream.cpp -o strs…

ends

C++

strstreamでNULL終端していない場合は、endsを出力することでNULL終端する。ends - cpprefjp C++日本語リファレンス前回のプログラムに、endsの処理を追加する。このようにする。 $ vi ends.cpp $ g++ ends.cpp -o ends In file included from /usr/include/…

strstream

C++

文字列をストリームのように扱えるクラスがstrstreamstd::strstream - cppreference.com入出力演算子で、文字列を追加したりできる。(ただし、随分前から非推奨になっているので、 basic_istringstream - cpprefjp C++日本語リファレンス 現在では、こちらを…