このブログのC++言語記事のまとめページです。先頭の数字はC++のバージョンを指します(20→C++ 20等)。
言語機能
- 17 右辺値参照とRVO
- Function-try-block(関数tryブロック)
- do {...} while((void)0, 0)によるマクロラッピング
- MSVC版new/delete演算子の覚え書き
- 11 整数→整数の2進接頭辞バイト単位リテラルの定義
標準ライブラリ
文字列
- 17 ワイド文字列の静的配列からstd::vector<std::wstring>を作成する
- 17-20 文字列をある文字で分割した文字列ビューのベクターを作成する
- 17 UTF-16サロゲートペア判定とUTF-16/UTF-32文字列の相互変換
- 20 標準ライブラリでUTF-16とUTF-32を変換する関数
- Windows環境で絵文字のstd::iswgraphがfalseな理由の考察
- 20 文字列を結合する関数
コンテナ・スマートポインタ
- 17 基本的なSTL要素操作
- STLのスマートポインタが&演算子をオーバーロードしないのはshared_ptrのため?
- STLでwil::out_param相当の機能を実装する
- STLスマートポインタのconst修飾の不思議と解釈
- 17 STL variant、any、optional
- 20 std::span、std::basic_string_view、std::ranges::subrangeの使い分け
- 20 生のポインタをstd::spanで扱う
- 20 MSVS 2019ではstd::span
のイテレーター初期化は不正な要素を参照しないように丸められる
レンジ(Ranges)
- 20 STLのrangeをvectorに変換する関数
- 20 Rangesプロジェクションの動作確認用コード
- 20 レンジについて調べたこと
- 20 std::ranges::subrangeのメンバー関数使用例(Microsoft Visual Studio 2019 Community 16.9.0 Preview 3)
- std::multimap
標準入出力
整数
その他
Windows開発
標準入出力
デバイスIO
- ドライブのジオメトリ情報(物理的なサイズ情報)の取得(IOCTL_DISK_GET_DRIVE_GEOMETRY_EX)
- 20 DeviceIoControl(FSCTL_FILESYSTEM_GET_STATISTICS_EX)のラッパークラス
COM
- InitVariantFromStringで作成されるVARIANTはVT_BSTR
- VariantToStringの戻り値はCoTaskMem関係
- FormatForDisplayAlloc関数の返す文字列がコンソールで異常な文字(Unicode directional characters)を含む
- CLSID_QuickLinksに対するIDeskBand::GetBandInfoが必ず失敗する
- 20&WIL エクスプローラーのカラムの名前一覧を取得する
- 17 Win32 APIのSTRRET型出力引数をstd::wstring型で受け取るクラス
- 20&WIL レジストリに登録されたCLSIDの情報をCSVへ書き出す
セットアップAPI
- デバイス情報要素のGUIDと不透明ハンドルを列挙する
- 20 デバイス情報要素のGUIDと不透明ハンドルを列挙する C++17版
- 20 デバイス情報要素の文字列プロパティ(概要、クラス、クラスGUID、フレンドリーネーム、ハードウェアID)を列挙・整理する C++17版
- 20 Setup APIでシステムに存在するデバイスのクラス・インターフェイスのクラスと説明を列挙する C++11版
セキュリティ・アクセス権限
- 20 スレッドまたはプロセストークンのユーザー情報SIDの文字列表記・ユーザー名・参照ドメイン名を取得する
- プロセスの昇格タイプ(管理者権限等)を確認する
- 20&WIL 特権のプライマリドメイン情報(名前・SID)を取得する
- 20 GetTokenInformation関数のサンプルコード
ウィンドウ
- 20 ドロップされたOLEデータオブジェクトのクリップボード形式を列挙する C++11?版
- 20 ドロップされたOLEデータオブジェクトに含まれるShellItemを列挙する C++11?版
- ドロップされたOLEデータオブジェクトのクリップボード形式実例
- 17 Win32 APIでウィンドウを表示する
- 20 ウィンドウにDIBセクションを描画する
色
PEファイル
- 17 ファイルの多言語対応リソースの言語とファイルパスを取得する
- 20 IMAGE_COR20_HEADERを取得する C++11版
- 17 64ビットPEファイルのデータディレクトリの物理アドレスを取得する
- 実行ファイルのベースアドレス・関数・スタックのアドレスを取得する
- モジュールハンドルは実行可能ファイルのメモリマップトファイルアドレス
- 20 PEファイルのバージョン情報を取得する
- 20 PEファイルのインポート情報を列挙する
PowrProf.dll
- 20(Vista~) 画面の明るさを取得・設定する
- 20(Vista~) 電源スキームのGUID・名前・概要を列挙する
- 20(Vista~) 各電源スキームのサブグループのGUID・名前・概要を列挙する
その他
- 20&WIL MMDevice APIでミュートを切り替える
- 20&WIL MMDevice APIでスピーカー(既定のマルチメディア出力)の表示名を取得する
- 20&WIL MMDevice APIでスピーカー(既定のマルチメディア出力)の音量情報を取得する
- EFLAGSの値とCPUID命令の使用可否を確認する(32ビット限定)
- Win32 API NTSTATUSの覚書
- 20 フォントの名前を列挙する
- 設定(Windows設定アプリ)を表示する
- 20 ACPIテーブルIDを整数・文字列として列挙する
- ICU4Cでユニコードを扱う
- IPv4アドレスを列挙する
C++/WinRT
- MSVS Community 2019 16.9.0 Preview 3.0でC++/WinRT開発を可能とする
- バッテリーのデバイスセレクター文字列とレポートを取得する
- Obsolute 11 MMDevice APIを利用してマスター音量を操作する