2011-04-16 103 views
1

我想將CHAR文件轉換爲UNICODE文件。 我在CHAR文件類型中按字符讀取文件字符,然後將此字符保存在CHAR變量中,然後我想將此CHAR變量複製到WCHAR變量,然後將WCHAR變量寫入UNICODE文件。如何將CHAR變量複製到C++的WCHAR變量中

這裏是代碼:

#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。

+0

爲什麼你是在讀值作爲首位'CHAR' wmain? – 2011-04-16 06:47:46

+0

我該怎麼辦? – Behzad 2011-04-16 06:50:19

+0

更好的選擇是將變量定義爲TCHAR類型,然後以正確的格式從數據文件中讀取值作爲開頭。 'TCHAR'是'windows.h'定義的'#',它是ANSI或Unicode的正確變體,具體取決於您的構建設置。 – 2011-04-16 07:08:18

回答

1

我一直髮現these string basics and conversions在處理C++中的Unicode時非常有用。

+0

關於[Unicode和字符集](http://www.joelonsoftware.com/articles/Unicode.html)和[Byte Order Mark(BOM)]的更有趣的東西(http://unicode.org/faq/utf_bom .html#BOM)的文件... – mousio 2011-04-16 20:11:57