9. エンディアンに関するテンプレート 更新日:2021年9月1日 公開日:2021年8月30日 C++関数・テンプレート集プログラミング技術情報 元ネタ 9.1 実行時にエンディアンを判定する関数 9.2 エンディアンを変換(big⇔little)する関数テンプレート 9.3 エンディアン名を取得する関数テンプレート ↑ C++関数・テンプレート集 続きを読む
8.3 改行コード(CR, CRLF, LF)が混在するテキストファイルを読む。 公開日:2021年8月30日 C++関数・テンプレート集プログラミング技術情報 タイトルでは「テキストファイルを読む」とありますが、ファイルに限定する必要はないので、まずは反復子を使って汎用的に実装したあと、ファイルを扱うための関数を多重定義していくことにします。 ところで、最近は改行文字にCRを使 […] 続きを読む
8.2 バイナリファイルから変数 (ポインタ以外) を読む。 公開日:2021年8月28日 C++関数・テンプレート集プログラミング技術情報 今回は前回の逆で、バイナリファイルから変数を読み込みます。実際にはバイナリファイルというよりバイナリストリームからの読み込みになります。ファイルから読み込む場合はstd::fstreamなどを使えばいいでしょう。 [cr […] 続きを読む
8.1 バイナリファイルに変数(ポインタ以外)を書く。 公開日:2021年8月27日 C++関数・テンプレート集プログラミング技術情報 内部にポインタや参照を含まない型のオブジェクトであれば、単純なバイト列としてバイナリファイルに書き込むことができそうです。実際には仮想関数を持つ型はダメというようにいくつかのさらに制約があります。昔から単純なバイナリーデ […] 続きを読む
8. 入出力に関するテンプレート 更新日:2021年8月30日 公開日:2021年8月27日 C++関数・テンプレート集プログラミング技術情報 元ネタ 8.1 バイナリファイルに変数 (ポインタ以外) を書く。 8.2 バイナリファイルから変数 (ポインタ以外) を読む。 8.3 改行コード(CR, CRLF, LF)が混在するテキストファイルを読む。 ↑ C+ […] 続きを読む
7.3 シフトJISの2バイト文字⇔区点番号/JIS/EUC-JP変換 公開日:2021年8月27日 C++関数・テンプレート集プログラミング技術情報 今回は元ネタにプログラムが掲載されていません。ですが、せっかくなので当サイトではプログラムを掲載することにしましょう。 シフトJIS⇔JIS変換 本来であれば、シフトJISからまずは区点番号に変換して、区点番号からJIS […] 続きを読む
7.2 シフトJIS 2バイト文字の判定 公開日:2021年8月25日 C++関数・テンプレート集プログラミング技術情報 UTF-8の普及でシフトJISの出番は以前に比べて随分減りました。そえれでもWindows環境では今でも現役ですし、マイコンのようなUnicodeを扱いにくい環境でもよく使います。 今回はそんなシフトJISの第1バイトか […] 続きを読む
7.1.3 UTF-16文字列関数 公開日:2021年8月25日 C++関数・テンプレート集プログラミング技術情報 今回は、Unicodeの1文字(正確にはコードポイント)を読み書きする関数、そしてUTF-16の文字列の長さを求める関数を定義します。今回も同様、C++11以降かつint型が32ビットの処理系を仮定しています。 まずは関 […] 続きを読む
7.1.2 サロゲート・ペア⇔Unicodeスカラ値変換 公開日:2021年8月22日 C++関数・テンプレート集プログラミング技術情報 UTF-16のサロゲートとUnicodeスカラ値(UTF-32)の相互変換を行います。今回も前回と同様、C++11以降かつint型が32ビットの処理系を仮定しています。 定数定義は前回のものを引き継ぎますが、以下のものを […] 続きを読む
7.1.1 UTF-16 符号単位がサロゲートか否かを判定する。 公開日:2021年8月22日 C++関数・テンプレート集プログラミング技術情報 C++11から導入されたchar16_t型は、<uchar>で__STDC_UTF_16__マクロが定義されている場合にUTF-16のコードポイントを保持する文字型になります。ただし、C++20からは__ST […] 続きを読む