タグ

ブックマーク / tkmakwins15.tuzikaze.com (2)

  • Windows API on C++

    となります。グローバルなロケールを設定する場合、std::localeクラスのstaticメンバ関数のglobalを用いて設定します。 std::locale std::locale::global(const std::locale&); これにロケールクラスのインスタンスを引き渡します。ただし、このロケールが影響を与えるのは、これを実行した後で生成したインスタンスに対してだけです。 たとえば、std::wcoutには影響を及ぼしません。そこで、std::basic_ostreamクラスの基底クラスであるstd::iosクラスのimbueメンバ関数を呼びましょう。 std::ios::imbue(const std::locale&); これにlocaleクラスのオブジェクトを渡せばいいです。 Cであれば、setlocale()関数によって設定します。これはプログラム全体に影響を

    nobeans
    nobeans 2013/12/28
    ロケールと文字コード変換
  • Windows API on C++

    〜A系の関数、構造体は引数にShift_jis文字列を受け取ります。〜W系の関数、構造体は引数にUnicode文字列を受け取ります。 NT系で〜A系の関数を呼び出すと、Unicodeへの変換が起こります。これがオーバーヘッドになるかどうかといえば微妙ですが、全くないとは思えません。 次の節では、APIプログラミングではどのようになるのかを解説します。 2 APIプログラミングと文字列 VCなどのWindows環境のC++では、基的に、Shift_jisをchar型で保持し、Unicodeをwchar_tで保持します。 プログラムがUnicodeに対応することには、次のような利点があります。 国際化に対応できる。 Shift_jisの範囲の文字(半角かな除く)であれば、2バイトの固定長であらわせる。 しかしながら、charを使わなければならない場面もあると思います。具体的には… 9x

    nobeans
    nobeans 2013/12/28
    文字列
  • 1