如何把wchar_t类型的汉子转换为char*

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把wchar_t类型的汉子转换为char*相关的知识,希望对你有一定的参考价值。

char *strA = FileName.GetBuffer();

补充回答:
如果楼主不需要wchar_t*类型的指针的话,可以:
AnsiString tp;
wchar_t *s;
char *d;
tp=s;
d=tp.c_str();

也可使用WideCharToString(wchar_t * Source);函数转换
如果是数字或者字母的话就直接强制类型转换:)

补充:
楼主用这个试试,中文应该也可以:
WideCharToString(wchar_t * Source);
参考技术A 如何:在各种字符串类型之间进行转换
http://msdn.microsoft.com/zh-cn/library/ms235631(v=VS.80).aspx
http://msdn.microsoft.com/zh-cn/library/ms235631(v=VS.90).aspx
http://msdn.microsoft.com/zh-cn/library/ms235631(v=VS.100).aspx
参考技术B 这个你可以强制转换,要看你怎么用这玩意,C++里可以用string转,有个FORMAT,VC的话有个比较复杂的函数 参考技术C 试试mbtowc,具体用法查MSDN

如何将 Wchar_t* 转换为 const char* [重复]

【中文标题】如何将 Wchar_t* 转换为 const char* [重复]【英文标题】:How to convert Wchar_t* to const char* [duplicate] 【发布时间】:2011-12-27 05:46:24 【问题描述】:

我是一个 c++ 新手,同时在 windows CE .net compact 应用程序上工作

在尝试将六进制数据写入文件时

CString dataBlock1;
dataBlock1 = "";

CString temp;
for(int i = 0; i < rLen; i++)

temp.Format(L"%02X ",rec[i]);
dataBlock1 += temp;



std::ofstream out(file);

我收到此错误无法将参数 1 从 wchar * 转换为 const char* on 同时使用下面的 write 函数将 hexa 数据写入文件

out.write(myReader.dataBlock1.GetBuffer(),myReader.dataBlock1.GetLength());

我们如何将 wchar_* 转换为 const char* 以使 write 函数工作。

谢谢。

【问题讨论】:

How to convert 'wchar_t *' to 'const char *'。不仅是重复问题,而且使用CString,并且标题完全相同。 【参考方案1】:

可以使用wcstombs函数,参考here。

【讨论】:

这个似乎工作..谢谢萨克斯 win32有没有等价物?【参考方案2】:

Windows 有一组类和函数,它们采用 wchar_t(存储为 UTF-16 的文本)和 char(存储在 ANSI 字符集中的文本)。如果您有指向 wchar_t 的指针,则需要使用接受 wchar_t 的适当类或函数,或者需要将数据转换为 ANSI 字符集。

在这种情况下,您需要 ofstream 的 wchar_t 变体 wofstream。

【讨论】:

以上是关于如何把wchar_t类型的汉子转换为char*的主要内容,如果未能解决你的问题,请参考以下文章

自己写实现char TO wchar_t 的转换

如何将 char 数组转换为 wchar_t 数组?

wchar_t 和编码

char* 和 wchar_t* 如何互相转换

C++中的WCHAR_T怎么转化成CHAR?

wchar_t到QString的转换方法?