2009-11-24 162 views
8

如何轉換爲TCHAR[]char[]將TCHAR數組轉換爲char數組

+0

重複:http://stackoverflow.com/questions/159442/what-is-the-simplest-way-to-convert-char-to-from-tchar-in-c-cms – Noldorin 2009-11-24 10:41:26

+1

這將肯定幫助你:http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etc – Ajay 2013-03-27 05:21:38

+1

我只是改變一般 - >字符集:=「使用Unioncode字符集」和它現在正在工作(char *)tcharr; – user956584 2013-08-29 16:35:13

回答

2

TCHAR是針對char或wchar_t(寬字符)的Microsoft特定typedef。

轉換爲字符取決於它實際上是哪一個。如果TCHAR實際上是一個char,那麼你可以做一個簡單的轉換,但如果它確實是一個wchar_t,那麼你需要一個例程在字符集之間進行轉換。請參閱功能MultiByteToWideChar()

+0

我認爲我們需要從wchar_t轉換爲字符,所以我們需要WidecharToMultiByte! – 2009-11-24 11:26:42

1

這取決於字符集(Unicode或ANSI)(爲wchar_t或字符),因此,如果您使用的是ANSI只是TCHAR將是char沒有任何鑄造,但對Unicode你必須從轉變wchar_t的燒焦,您可以使用WideCharToMultiByte

8

老實說,我不知道如何與陣列,但與指針做,微軟爲我們提供了一些API,如wctombwcstombs。第一個不如第二個安全。所以我認爲你可以通過一個數組到指針和一個指向數組的指針來實現你想要達到的目標; PS:可能不是最好的解決方案,但至少它的工作和功能。

0

爲什麼不只是使用wcstombs_s

下面是顯示它是多麼簡單的代碼。

#define MAX_LENGHT 500 
... 

TCHAR szWideString[MAX_LENGHT]; 
char szString[MAX_LENGHT]; 
size_t nNumCharConverted; 
wcstombs_s(&nNumCharConverted, szString, MAX_LENGHT, 
     szWideString, MAX_LENGHT);