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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中的WCHAR_T怎么转化成CHAR?相关的知识,希望对你有一定的参考价值。

#include "stdafx.h"#include<iostream>
#include<io.h>
#include <string.h>
using namespace std;
wchar_t* x=L"D:\\peizhi\\trail\\*.*";

void main()
_finddata_t file;
long lf;
if((lf = _findfirst( static_cast<char>(x), &file))==-1l)
cout<<"文件没有找到!\n";
else

while( _findnext( lf, &file ) == 0 )

cout<<file.name;
cout<<endl;


_findclose(lf);
system("pause");


本人刚刚学?求指导!

参考技术A 使用这个函数转换:
int WideCharToMultiByte(
__in UINT CodePage,
__in DWORD dwFlags,
__in LPCWSTR lpWideCharStr,
__in int cchWideChar,
__out LPSTR lpMultiByteStr,
__in int cbMultiByte,
__in LPCSTR lpDefaultChar,
__out LPBOOL lpUsedDefaultChar
);
参数有点多,详细请参看MSDN。

使用方法:
char cc[260];
int WideCharToMultiByte( CP_ACP, 0, x, -1, cc, 260, NULL, NULL );
参考技术B 标准C++函数, 从wchar_t 转换到 char
wcstombs (
char * s, //转换结果
const wchar_t * pwcs, //需要转换的数据
size_t n // 第一个参数 的存储空间
);本回答被提问者采纳

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;
}

以上是关于C++中的WCHAR_T怎么转化成CHAR?的主要内容,如果未能解决你的问题,请参考以下文章

C++里把char转化为string怎么解决

C++ string 转化为LPCTSTR

QT Qstring怎么转化成char[],不是char*

c++如何将vector<char>转化成string

c++中如何将一个字符串转化成数组

python怎么讲string转化成char