如何把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*的主要内容,如果未能解决你的问题,请参考以下文章