下面的代碼不能正常工作,因爲我的MFC程序是在unicode的情況下。如何使:: WriteFile在UNICODE環境下工作?
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);
結果是「123」,這應該是「123456」
我是Unicode的BOM可以解決這個在互聯網上找到。 所以我修改了我的代碼,如下所示。
WORD Unicode = 0xfeff; // UNICODE BOM
::WriteFile(hFile, &Unicode, 2, &dwByte, nullptr);
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);
但是,它並沒有任何區別。
似乎這是一個簡單的問題,但我迷失了尋找解決方案。
任何想法都會比歡迎。提前致謝。
我很欣賞這個繁殖。謝謝。 – 2012-03-26 06:27:34
'TEXT()'對'char'或'wchar_t'進行操作取決於是否定義了UNICODE,但'lstrlenW()'僅對'wchar_t'進行操作。如果你想讓代碼在兩種環境下運行,可以使用'lstrlen()'和'sizeof(TCHAR)',例如:'WriteFile(hFile,TEXT(「123456」),lstrlen(TEXT(「123456」))* sizeof(TCHAR),...)' – 2012-03-26 15:31:04
@RemyLebeau - 再次...好的! – 2018-01-17 11:44:22