Win32/64技術 003 ワイド文字列→マルチバイト文字列変換

提供:yonewiki
2023年10月31日 (火) 23:26時点におけるYo-net (トーク | 投稿記録)による版 (ページの作成:「Win32/64_アプリケーション開発に戻る。 == '''概要''' ==  ワイド文字のUTF-16から変換してマルチバイトのSJIS(Shift_JIS、Microsoft提唱のコードページcp932とも呼ばれる)やUTF-8に変換する方法です。MultiByteToWideChar関数にあい対する関数WideCharToMultiByteを使います。 <syntaxhighlight lang="cpp"> wchar_t pwchstr[] = L"Win32/64アプ…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

Win32/64_アプリケーション開発に戻る。

概要

 ワイド文字のUTF-16から変換してマルチバイトのSJIS(Shift_JIS、Microsoft提唱のコードページcp932とも呼ばれる)やUTF-8に変換する方法です。MultiByteToWideChar関数にあい対する関数WideCharToMultiByteを使います。


    wchar_t pwchstr[] = L"Win32/64アプリケーション";

    int icharLen = WideCharToMultiByte(932, 0, pwchstr, -1, nullptr, 0, nullptr, nullptr);
    char* chstr = new char[icharLen];
    WideCharToMultiByte(932, 0, pwchstr, -1, chstr, icharLen, nullptr, nullptr);


標準string型 wstring型を使う場合(推奨)

    wchar_t pwchstr[] = L"Win32/64アプリケーション";
    std::wstring wstringUTF16str = std::wstring(pwchstr);

    int icharLen = WideCharToMultiByte(932, 0, wstringUTF16str.c_str(), -1, nullptr, 0, nullptr, nullptr);
    std::string stringSJISstr(icharLen, 0);
    WideCharToMultiByte(932, 0, wstringUTF16str.c_str(), -1, stringSJISstr.c_str(), stringSJISstr.size(), nullptr, nullptr);

 

Win32/64_アプリケーション開発に戻る。