wchar_t* 和char* 互转

  1. //将单字节char*转化为宽字节wchar_t*

wchar_t* AnsiToUnicode(const char* szStr)
{
int nLen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0);
if (nLen == 0)
{
return NULL;
}
wchar_t* pResult = new wchar_t[nLen];
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen);
return pResult;
}

//将宽字节wchar_t*转化为单字节char*
inline char* UnicodeToAnsi(const wchar_t* szStr)
{
int nLen = WideCharToMultiByte(CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL);
if (nLen == 0)
{
return NULL;
}
char* pResult = new char[nLen];
WideCharToMultiByte(CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL);
return pResult;
}

时间: 2024-10-25 03:41:00

wchar_t* 和char* 互转的相关文章

cannot convert from 'wchar_t *' to 'char *' 问题

MFC中使用unicode 会导致cstring之间的转换变的很复杂 经常遇到这样的错误cannot convert from 'wchar_t *' to 'char *' 强制转换成wchar_t 强制转换成 char* ,原有的字符串又会被空格隔开 如果没有对unicode的特殊需求,可以在project>项目设置里  character set 选项设置成 “Not set" 问题可以得到解决 cannot convert from 'wchar_t *' to 'char *'

CString向char类型转化 ---“=”: 无法从“wchar_t *”转换为“char *

此文从网上复制过来,原文出处已丢失,望见谅哈       VC 2005中,这个本来很简单的问题又稍微复杂了一点.    在工程里面,一个必不可少的步骤就是把CString转换为shar*字符串.通过google,我发现可以使用以下方法:    使用CString的GetBuffer方法         CString s("Hello,World");        char* c = s.GetBuffer(0);     但是我在VC++2005中编译得到下列信息        

c++ wchar_t 与char 直接的转换【转】

http://blog.163.com/tianshi_17th/blog/static/4856418920085209414977/ 实现了一下 #include "stdafx.h" #include <iostream> #include <sstream> using namespace std; char* wchar2char(wchar_t *WStr) { size_t len = wcslen(WStr) + 1; size_t conver

char 转wchar_t 及wchar_t转char

利用WideCharToMultiByte函数来转换,该函数映射一个unicode字符串到一个多字节字符串.通常适合于window平台上使用. #include <tchar.h> #include <windows.h> int _tmain(int argc, _tchar* argv[]) { wchar_t pwstr[] =l"我是中国人"; wchar_t pwstr2[20]; char *pcstr = (char *)malloc(sizeof

CString与char *互转总结

1 前言 今天在网上看论坛,发现大家对CString与Char *互转各说一词,其实我发现提问者所说的情况与回答问题的人完全不是同一情况,这里做一总结. 首先大家得清楚一件事,一般在网上提出问题的人大部分使用的都是VC,那么你就应该知道,在VC下编程,工程属性中有一属性Charecter Set属性,其值可以设置为Use Multi-Byte Charecter Set 和 Use Unicode Charecter Set 这两种选择,具默认情况下工程是采用了Use Unicode Chare

C++ TCHAR* 与char* 互转

在MSDN中有这么一段: Note: The ANSI code pages can be different on different computers, or can be changed for a single computer, leading to data corruption. For the most consistent results, applications should use Unicode, such as UTF-8 (code page 65001) or

wchar_t与char、wstring与string的相互转换

个人倾向于使用优秀的开源库做这个. 最近使用boost进行转换,代码极其简单: boost::filesystem::path src(wchar_t); char = src.string().c_str(); 当然也支持wstring和string的转换

windows下wchar_t* 转char*

这个在windows下很常见,常用,留个档. 一般用这个函数: size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count ); mbstr The address of a sequence of multibyte characters. wcstr The address of a sequence of wide characters. count The maximum number of bytes that ca

CString和char互转

CString转char: CString m_Readcard; char ReaderName[22]; strcpy((char*)&ReaderName,(LPCTSTR)m_Readcard); char 转CString: CString m_Readcard; char ReaderName[22]; CString m_Readcard(ReaderList); 原文地址:https://www.cnblogs.com/Pond-ZZC/p/9172440.html