0

次のようにコードの断片を使用して、テキストファイルの内容を取得します。ただし、最後のバッファbuffには、1つの場所に8という数字しかなく、他には何もありません。開かれているファイルには、「プロジェクト」という単語が唯一のコンテンツとして含まれています。受け取るべきコンテンツまたは結果をどのように処理(つまり印刷)できますか?次のコードの何が問題になっていますか。

        TCHAR buff[20];
        DWORD dwNumRead;
        CString finalPath = path + L"\\" + fileName.c_str();
        HANDLE hfile=CreateFile(finalPath ,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

        if(ReadFile(hfile,buff,20,&dwNumRead,NULL))
        {
            CString temp;
            temp.Format(L"%s",&buff[0]);
            ATLTRACE(L"Success %s", temp);
        }
        CloseHandle(hfile);
4

1 に答える 1

3

問題は、%sマクロを含むワイド文字で構成されるMFCCStringを印刷しようとしていることです。ワイド文字を印刷するには、%Sマクロが必要です。

これは動作します:

    char buff[20] = "";
    DWORD dwNumRead;
    CString finalPath = path + L"\\" + fileName.c_str();;
    HANDLE hfile=CreateFile(finalPath ,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

    if(ReadFile(hfile,buff,20,&dwNumRead,NULL))
    {
        CString temp = buff;
        ATLTRACE("Success %S", temp);
    }
    CloseHandle(hfile);

それ以外の場合は、次の追加のC++定義を使用してプログラムをUnicodeでコンパイルします。UNICODE、_UNICODE

于 2012-07-03T15:32:46.947 に答える