【发布时间】:2011-08-06 19:09:00
【问题描述】:
我想将 CHAR 文件转换为 UNICODE 文件。 我以 CHAR 文件类型逐个字符读取文件,然后将此字符保存在 CHAR 变量中,然后我想将此 CHAR 变量复制到 WCHAR 变量,然后将 WCHAR 变量写入 UNICODE 文件。
这里是代码:
#include<Windows.h>
#include<tchar.h>
int _tmain(int argc, LPCTSTR argv[])
{
HANDLE hInfile, hOutfile;
CHAR f1;
WCHAR f2;
DWORD Rd, Wrt;
INT i;
CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL,NULL);
CreateFile(argv[2], GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL);
while ((ReadFile(hInfile, &f1, sizeof(CHAR), &Rd, NULL) && Rd>0))
{
**_tccpy(f2, f1);**
WriteFile(hOutfile, &f2, Rd, &Wrt, NULL);
}
CloseHandle(hInfile);
CloseHandle(hOutfile);
}
粗体代码是问题,如何将 CHAR 变量复制到 WCHAR 变量。 _tccpy 函数和 strcpy 函数不能这样做,因为它们的原型都是 char 或 wachar。
【问题讨论】:
-
你为什么首先将值读取为
CHAR? -
更好的选择是将变量定义为类型
TCHAR,然后以正确的格式从数据文件中读取值开始。TCHAR是#definedbywindows.h是正确的变体,ANSI 或 Unicode,取决于您的构建设置。 -
谢谢,这是真的,但创建的文件不是 Unicode 文件。怎么了?