头文件:UTN.h
- #pragma once
- #include "stdafx.h"
- #include "windows.h"
- #include <iostream>
- #include <string>
- using namespace std;
- //**************string******************//
- // ASCII与Unicode互转
- wstring AsciiToUnicode(const string& str);
- string UnicodeToAscii(const wstring& wstr);
- // UTF8与Unicode互转
- wstring Utf8ToUnicode(const string& str);
- string UnicodeToUtf8(const wstring& wstr);
- // ASCII与UTF8互转
- string AsciiToUtf8(const string& str);
- string Utf8ToAscii(const string& str);
- //**************CString******************//
- // ASCII与Unicode互转
- CStringW AsciiToUnicode_CSTR(const CStringA& str);
- CStringA UnicodeToAscii_CSTR(const CStringW& wstr);
- // UTF8与Unicode互转
- CStringW Utf8ToUnicode_CSTR(const CStringA& str);
- CStringA UnicodeToUtf8_CSTR(const CStringW& wstr);
- // ASCII与UTF8互转
- CStringA AsciiToUtf8_CSTR(const CStringA& str);
- CStringA Utf8ToAscii_CSTR(const CStringA& str);
- /************string-int***************/
- // string 转 Int
- int StringToInt(const string& str);
- string IntToString(int i);
- string IntToString(char i);
- string IntToString(double i);
- #pragma once
- #include "stdafx.h"
- #include "UTN.h"
- wstring AsciiToUnicode(const string& str) {
- // 预算-缓冲区中宽字节的长度
- int unicodeLen = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, nullptr, 0);
- // 给指向缓冲区的指针变量分配内存
- wchar_t *pUnicode = (wchar_t*)malloc(sizeof(wchar_t)*unicodeLen);
- // 开始向缓冲区转换字节
- MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, pUnicode, unicodeLen);
- wstring ret_str = pUnicode;
- free(pUnicode);
- return ret_str;
- }
- string UnicodeToAscii(const wstring& wstr) {
- // 预算-缓冲区中多字节的长度
- int ansiiLen = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, nullptr, 0, nullptr, nullptr);
- // 给指向缓冲区的指针变量分配内存
- char *pAssii = (char*)malloc(sizeof(char)*ansiiLen);
- // 开始向缓冲区转换字节
- WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, pAssii, ansiiLen, nullptr, nullptr);
- string ret_str = pAssii;
- free(pAssii);
- return ret_str;
- }
- wstring Utf8ToUnicode(const string& str) {
- // 预算-缓冲区中宽字节的长度
- int unicodeLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, nullptr, 0);
- // 给指向缓冲区的指针变量分配内存
- wchar_t *pUnicode = (wchar_t*)malloc(sizeof(wchar_t)*unicodeLen);
- // 开始向缓冲区转换字节
- MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, pUnicode, unicodeLen);
- wstring ret_str = pUnicode;
- free(pUnicode);
- return ret_str;
- }
- string UnicodeToUtf8(const wstring& wstr) {
- // 预算-缓冲区中多字节的长度
- int ansiiLen = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, nullptr, 0, nullptr, nullptr);
- // 给指向缓冲区的指针变量分配内存
- char *pAssii = (char*)malloc(sizeof(char)*ansiiLen);
- // 开始向缓冲区转换字节
- WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, pAssii, ansiiLen, nullptr, nullptr);
- string ret_str = pAssii;
- free(pAssii);
- return ret_str;
- }
- string AsciiToUtf8(const string& str) {
- return UnicodeToUtf8(AsciiToUnicode(str));
- }
- string Utf8ToAscii(const string& str) {
- return UnicodeToAscii(Utf8ToUnicode(str));
- }
- // ASCII与Unicode互转
- CStringW AsciiToUnicode_CSTR(const CStringA& str) {
- return AsciiToUnicode(LPCSTR(str)).c_str();
- }
- CStringA UnicodeToAscii_CSTR(const CStringW& wstr) {
- return UnicodeToAscii(LPCWSTR(wstr)).c_str();
- }
- // UTF8与Unicode互转
- CStringW Utf8ToUnicode_CSTR(const CStringA& str) {
- return Utf8ToUnicode(LPCSTR(str)).c_str();
- }
- CStringA UnicodeToUtf8_CSTR(const CStringW& wstr) {
- return UnicodeToUtf8(LPCWSTR(wstr)).c_str();
- }
- // ASCII与UTF8互转
- CStringA AsciiToUtf8_CSTR(const CStringA& str) {
- return UnicodeToUtf8_CSTR(AsciiToUnicode_CSTR(str));
- }
- CStringA Utf8ToAscii_CSTR(const CStringA& str) {
- return UnicodeToAscii_CSTR(Utf8ToUnicode_CSTR(str));
- }
- // string 与 Int 互转
- int StringToInt(const string& str) {
- return atoi(str.c_str());
- }
- string IntToString(int i) {
- char ch[1024];
- memset(ch, 0, 1024);
- sprintf_s(ch, sizeof(ch), "%d", i);
- return ch;
- }
- string IntToString(char i) {
- char ch[1024];
- memset(ch, 0, 1024);
- sprintf_s(ch, sizeof(ch), "%c", i);
- return ch;
- }
- string IntToString(double i) {
- char ch[1024];
- memset(ch, 0, 1024);
- sprintf_s(ch, sizeof(ch), "%f", i);
- return ch;
- }
UTF8和UnICODE转换
- CString CNoviewPDlg::AsciiToUnicode(CStringA szStringA)
- {
- string str = szStringA.GetBuffer(0);
- // 预算-缓冲区中宽字节的长度
- int unicodeLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, nullptr, 0);
- // 给指向缓冲区的指针变量分配内存
- wchar_t *pUnicode = (wchar_t*)malloc(sizeof(wchar_t)*unicodeLen);
- // 开始向缓冲区转换字节
- MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, pUnicode, unicodeLen);
- wstring ret_str = pUnicode;
- free(pUnicode);
- return CString(ret_str.c_str());
- }
- CStringA CNoviewPDlg::UnicodeToAscii(CString szString)
- {
- wstring wstr = szString.GetBuffer(0);
- // 预算-缓冲区中多字节的长度
- int ansiiLen = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, nullptr, 0, nullptr, nullptr);
- // 给指向缓冲区的指针变量分配内存
- char *pAssii = (char*)malloc(sizeof(char)*ansiiLen);
- // 开始向缓冲区转换字节
- WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, pAssii, ansiiLen, nullptr, nullptr);
- string ret_str = pAssii;
- free(pAssii);
- return CStringA(ret_str.c_str());
- }