14

に変換する方法TCHAR[]char[]?

4

4 に答える 4

11

正直なところ、配列を使用する方法はわかりませんが、ポインターを使用する場合、Microsoft はwctombwcstombsなどの 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: 最善の解決策とは言えませんが、少なくとも機能していて機能しています。

于 2012-12-19T01:56:36.370 に答える
4

charTCHAR は、またはwchar_t(ワイド文字)の Microsoft 固有の typedef です。

char への変換は、実際にこれらのどれであるかによって異なります。TCHAR が実際に である場合charは、単純なキャストを実行できますが、実際に である場合はwchar_t、文字セット間で変換するルーチンが必要になります。関数を参照してくださいMultiByteToWideChar()

于 2009-11-24T10:48:33.860 に答える
1

文字セット (Unicode または ANSI) (wchar_t または char) に依存するため、ANSI を使用している場合、TCHAR はキャストなしで単に char になりますが、Unicode の場合は wchar_t から char に変換する必要があり、WideCharToMultiByteを使用できます。

于 2009-11-24T10:49:19.210 に答える