想把一个variant类型的变量写入文件中,如果按以下代码运行,可以写到文件里但是是乱码,奇怪的是可以把写入的那个变量的内容读出来,读的还是正确的。
VARIANT str;
VariantInit(&str);
str.vt=VT_BSTR;
str.bstrVal=SysAllocString(_T(iii));
LPWSTR szPath=_T(F:\\write.txt);
HANDLE hFile=CreateFile(szPath,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwBytesWritten=0;
WriteFile(hFile,&str,sizeof(VARIANT),&dwBytesWritten,NULL);
CloseHandle(hFile);
//读取
hFile=CreateFile(szPath,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwBytesRead=0;
VARIANT temp;
VariantInit(&temp);
ReadFile(hFile,&temp,sizeof(VARIANT),&dwBytesRead,NULL);
CloseHandle(hFile);
直接运行以上代码,先写一边再打开,查看temp的值发现读取的就是iii,但是打开test.txt文件查看,里面是乱码。
如果直接readfile,打开上一次程序运行生成的test.txt文件,查看temp的值显示empty或者是“”或者是<读取字符串字符时出错>,每次运行结果都不一样,但是都不能读出iii。