2

あなたが「方法」を持っていると言う

int Read(...)
{
    unsigned char Byte = 0;
    if(!ReadFile(.., &byte, 1,...))
        return -1;

    return Byte;
}


int ReadBlock(LPWSTR buffer, int cchBuffer ...)
{
    int c = 0;
    int cnt = 0;
    do
    {
        if( (c=Read(...)) != -1 )
            buffer[num++] = c; // Here.
    } while( num < ccBuffer );
    return cnt;
}

そのintをWCHARに正しく取得するための適切な方法は何ですか?

4

4 に答える 4

2

使用mbstowcs(マルチバイト文字列からワイド文字列):

int ReadBlock(LPWSTR buffer, int cchBuffer ...)
{
    int c = 0;
    std::vector<char> narrow;
    while((c=Read(...)) != -1 )
       narrow.push_back(c);
    }
    narrow.push_back(0);
    mbstowcs(buffer, &narrow.front(), cchBuffer);
}

mbstowcs現在のロケールを使用するため、入力のエンコーディングと一致する必要があります。

于 2012-08-21T13:21:54.477 に答える
1
convert char <= => wchar
in windows:
MultiByteToWideChar
WideCharToMultiByte

in linux:
mbsrtowcs
wcsrtombs
于 2012-08-21T13:33:14.473 に答える
0

読んだ後static_cast、dynamic_cast、reinterpret_castはいつ使用する必要がありますか?、この質問をするきっかけとなったのは、キャスティングに関する知識が不足していたことです。

于 2012-09-03T06:37:04.487 に答える
0
#include<tchar.h>

int main()
{
    int integer = 0;
    wchar_t wideCharacter = (wchar_t)integer;

    return 0;

}
于 2012-08-21T13:12:10.683 に答える