に変換する方法TCHAR[]
はchar[]
?
4 に答える
正直なところ、配列を使用する方法はわかりませんが、ポインターを使用する場合、Microsoft はwctombやwcstombsなどの API を提供しています。最初のものは、2 番目のものよりも安全性が低くなります。したがって、1 つの配列からポインターへのキャストと、1 つのポインターから配列へのキャストで達成したいことができると思います。
// ... your includes
#include <stdlib.h>
// ... your defines
#define MAX_LEN 100
// ... your codes
// I assume there is no any defined TCHAR array to be converted so far, so I'll create one
TCHAR c_wText[MAX_LEN] = _T("Hello world!");
// Now defining the char pointer to be a buffer for wcstomb/wcstombs
char c_szText[MAX_LEN];
wcstombs(c_szText, c_wText, wcslen(c_wText) + 1);
// ... and you're free to use your char array, c_szText
PS: 最善の解決策とは言えませんが、少なくとも機能していて機能しています。
char
TCHAR は、またはwchar_t
(ワイド文字)の Microsoft 固有の typedef です。
char への変換は、実際にこれらのどれであるかによって異なります。TCHAR が実際に である場合char
は、単純なキャストを実行できますが、実際に である場合はwchar_t
、文字セット間で変換するルーチンが必要になります。関数を参照してくださいMultiByteToWideChar()
。
文字セット (Unicode または ANSI) (wchar_t または char) に依存するため、ANSI を使用している場合、TCHAR はキャストなしで単に char になりますが、Unicode の場合は wchar_t から char に変換する必要があり、WideCharToMultiByteを使用できます。