关于mfc:如何将tchar指针转换为char指针

How to convert tchar pointer to char pointer

我想将 tchar* 转换为 char * 这可能吗?如果是的话怎么做。我使用 unicode 设置


你不能转换指针,你需要分配一个新的字符串是"char"而不是"wchar_t"

最优雅的方法是使用 ATL 转换宏,因为它会隐藏所有分配并调用其他注释中提到的函数

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
#include

void YourFunction()
{
    TCHAR wszHelloTchar = _T("Hello!\
");

    USES_CONVERSION;   // a macro required once before using T2A() and other ATL macros

    // printf require a char*
    // T2A converts (if necessary) the TCHAR string to char
    printf( T2A( wszHelloTchar ) );
}

TCHAR 可以是普通的 charwchar_t,具体取决于您的项目设置。如果是后者,则需要使用带有适当代码页参数的 WideCharToMultiByte


我发现 wcstombs 非常适合做这种事情,