这次我用的是调用windows的库来实现的转换 windows的这个库功能还是挺强大的,我只是用了这一种,有空再补充ascii码,unicode码,GBK码的相互转换。
不知道文本的编码方式可以下载个notepad++来查看
ascii转unicode大多数是为了处理汉字信息的。
c++实现:
ascii转unicode
#include <iostream>
#include <sstream>
#include <fstream>
#include <windows.h>
using namespace std;
int main()
{
cout<<"input the strFilename:"<<endl;
string strFilename;
cin>>strFilename;
ifstream infile(strFilename.c_str());
string strGetString;
getline(infile,strGetString);
int nGetStringSize=strGetString.length();
DWORD dwStringSize=MultiByteToWideChar(CP_ACP, 0, strGetString.c_str(), nGetStringSize, NULL, 0);
wchar_t *wchGetString=new wchar_t[dwStringSize+1];
wmemset(wchGetString, L'\0', dwStringSize+1);
//进行转换
int nRet=MultiByteToWideChar(CP_ACP, 0, strGetString.c_str(), nGetStringSize, wchGetString, dwStringSize);
if(nRet<=0)
{
cout<<"转换失败"<<endl;
DWORD dwErr=GetLastError();
switch(dwErr)
{
case ERROR_INSUFFICIENT_BUFFER:
printf("ERROR_INSUFFICIENT_BUFFER\n");
break;
case ERROR_INVALID_FLAGS:
printf("ERROR_INVALID_FLAGS\n");
break;
case ERROR_INVALID_PARAMETER:
printf("ERROR_INVALID_PARAMETER\n");
break;
case ERROR_NO_UNICODE_TRANSLATION:
printf("ERROR_NO_UNICODE_TRANSLATION\n");
break;
}
}
wcout.imbue(locale("chs"));//中文输出
cout<<strGetString<<endl;
wcout<<wchGetString<<endl;
wcout<<endl;
return 0;
}
代码已在vs2010下跑通