1. 写入的时候采用多字节char类型
HANDLE hFile;
DWORD nBytes;
hFile=CreateFile(_T"test.txt"),GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);
char msg[]="以沃尔沃饿哦家人哦额无人机";
if(hFile!=INVALID_HANDLE_VALUE)
{ WriteFile(hFile,msg, sizeof(msg) ,&nBytes,NULL); CloseHandle(hFile); }
2. 直接写入unicode的头字节
HANDLE hFile;
DWORD nBytes;
hFile=CreateFile(_T("test.out"),GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);
WCHAR msg[]=L"伦敦警方立刻加拉斯减肥iejo房间里多少级啊法律解决我";
if(hFile!=INVALID_HANDLE_VALUE) { DWORD a=0xFEFF;
WriteFile(hFile,&a,sizeof(a),&nBytes,NULL);
WriteFile(hFile,msg, lstrlen(msg) * sizeof(TCHAR),&nBytes,NULL);//第三个参数可以直接sizeof(msg) CloseHandle(hFile); }
3. 使用WideCharToMultiByte转换成多字节
宽窄字符转化
int a = WideCharToMultiByte(CP_ACP, NULL, szText, -1, LPSTR(szTextAnsi), MAX_PATH, NULL, FALSE);//Unicode转换为ANSI,a的值包括了字符串最后的0
if (WriteFile(hFile, szTextAnsi,a-1, &dwBytesWrite, NULL))//写入的时候最后的0不用写入所以要用a-1
{
MessageBox(hwnd,TEXT("写入成功"),TEXT("成功"),0);
}
else
{
MessageBox(hwnd,TEXT("写入失败"),TEXT("出错"),0);
}
4. 使用wcstombs转换成多字节,需要引用wchar.h和locale.h
HANDLE hFile;
DWORD nBytes;
hFile=CreateFile(_T("test.out"),GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);
WCHAR msg[]=L"法律空间啊快点放假的就佛iejofijeiawjfajfejifio";
if(hFile!=INVALID_HANDLE_VALUE)
{
char buf[sizeof(msg)];
setlocale(LC_ALL, ".936");
wcstombs(buf, msg, sizeof(msg));
WriteFile(hFile,buf, sizeof(buf),&nBytes,NULL);
CloseHandle(hFile);
}
//*********以下为读入***********************//
hFile=CreateFile(_T("test.txt"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,0,NULL);
if(hFile!=INVALID_HANDLE_VALUE){ WCHAR line[256]={0};
BOOL bResult;
bResult=ReadFile(hFile,line,sizeof(line),&nBytes,NULL);
if(nBytes!=0)
{
printf("%s\r\n",line);
}
CloseHandle(hFile);
}