読者です 読者をやめる 読者になる 読者になる

Visual C++(cl.exe)で UTF-8 のファイルをコンパイルする

日本語版 Windows では、デフォルトの文字コードとして Shift-JIS(CP932)が広く使われています。 この Shift-JIS、2バイト目が ASCII コードと同じ、という文字がいくつか存在します。例えば「ソ」の Shift-JIS でのコードは16進数で835cで、2バイト目の5c…

【C++】ラムダ式でメンバ変数をキャプチャする

C++

メモ。メンバ関数内でラムダ式を使う時、メンバ変数をキャプチャするにはthisをキャプチャする。 struct Hoge { int n; void f() { auto lambda = [this]() -> int { // this をキャプチャ return n * 2; // メンバ n を使う } std::cout << lambda() << std…

【C++】private コンストラクタに、メンバ関数から呼ばれた外部の関数からアクセスする

C++

かなり限定的ですが、タイトルのような状況にぶち当たったので。 コンストラクタを private にして、create() みたいな static メンバ関数を作ってオブジェクトを作成するというイディオムがあります。 class hoge { hoge() { } // private コンストラクタ p…

【C++11】スコープ付きenum

C++

通常のenumの列挙子は、その enum が定義されているスコープに属すため、同じスコープに列挙子と同じ名前の変数などがあると名前の衝突が起こります。*1 int White; enum Color { Black, White }; // エラー! White を再定義している 衝突を避けるために、 …

【C/C++】char型の話

せっかくブログを開設したので、なんか書いてみようと思います。 以前どっかで書いた内容と大体同じだけど。 char 型とは C/C++ で文字を表す整数型。文字"列"ではないことに注意が必要。