C++字符集的相互传换

C++随笔——实现两个数据交换(包括字符串交换) 1.三变量法 #include "pch.h" #include <iostream> using namespace std; int main() { int a, b, t; cout << "输入两个整数a和b:"; cin >> a >> b; cout << "交换前:a = " << a <&lt... 阅读详情

#include <windows.h>

#include <vector>

#include <string>

using namespace std;


//utf8 转 Unicode

std::wstring Utf82Unicode(const std::string& utf8string)
{
int widesize = ::MultiByteToWideChar(CP_UTF8, 0, utf8string.c_str(), -1, NULL, 0);
if (widesize == ERROR_NO_UNICODE_TRANSLATION)
{
   throw std::exception("Invalid UTF-8 sequence.");
}
if (widesize == 0)
{
   throw std::exception("Error in conversion.");
}

std::vector<wchar_t> resultstring(widesize);

int convresult = ::MultiByteToWideChar(CP_UTF8, 0, utf8string.c_str(), -1, &resultstring[0], widesize);

if (convresult != widesize)
{
   throw std::exception("La falla!");
}

return std::wstring(&resultstring[0]);
}


//unicode 转为 ascii

string WideByte2Acsi(wstring& wstrcode)
{
int asciisize = ::WideCharToMultiByte(CP_OEMCP, 0, wstrcode.c_str(), -1, NULL, 0, NULL, NULL);
if (asciisize == ERROR_NO_UNICODE_TRANSLATION)
{
   throw std::exception("Invalid UTF-8 sequence.");
}
if (asciisize == 0)
{
   throw std::exception("Error in conversion.");
}
    std::vector<char> resultstring(asciisize);
int convresult =::WideCharToMultiByte(CP_OEMCP, 0, wstrcode.c_str(), -1, &resultstring[0], asciisize, NULL, NULL);

if (convresult != asciisize)
{
   throw std::exception("La falla!");
}

    return std::string(&resultstring[0]);
}

 

//utf-8 转 ascii

string UTF_82ASCII(string& strUtf8Code)
{
string strRet("");


//先把 utf8 转为 unicode 
wstring wstr = Utf82Unicode(strUtf8Code);

//最后把 unicode 转为 ascii
strRet = WideByte2Acsi(wstr);


return strRet;
}

///////////////////////////////////////////////////////////////////////


//ascii 转 Unicode

wstring Acsi2WideByte(string& strascii)
{
int widesize = MultiByteToWideChar (CP_ACP, 0, (char*)strascii.c_str(), -1, NULL, 0);
if (widesize == ERROR_NO_UNICODE_TRANSLATION)
{
   throw std::exception("Invalid UTF-8 sequence.");
}
if (widesize == 0)
{
   throw std::exception("Error in conversion.");
}
    std::vector<wchar_t> resultstring(widesize);
int convresult = MultiByteToWideChar (CP_ACP, 0, (char*)strascii.c_str(), -1, &resultstring[0], widesize);

if (convresult != widesize)
{
   throw std::exception("La falla!");
}

    return std::wstring(&resultstring[0]);
}

//Unicode 转 Utf8

std::string Unicode2Utf8(const std::wstring& widestring)
{
int utf8size = ::WideCharToMultiByte(CP_UTF8, 0, widestring.c_str(), -1, NULL, 0, NULL, NULL);
if (utf8size == 0)
{
   throw std::exception("Error in conversion.");
}

std::vector<char> resultstring(utf8size);

int convresult = ::WideCharToMultiByte(CP_UTF8, 0, widestring.c_str(), -1, &resultstring[0], utf8size, NULL, NULL);

if (convresult != utf8size)
{
   throw std::exception("La falla!");
}


return std::string(&resultstring[0]);
}

 

//ascii 转 Utf8

string ASCII2UTF_8(string& strAsciiCode)
{
string strRet("");


//先把 ascii 转为 unicode 
wstring wstr = Acsi2WideByte(strAsciiCode);

//最后把 unicode 转为 utf8

strRet = Unicode2Utf8(wstr);


return strRet;
}

 

【编程拾遗】VC++中LPCTSTR、CString、char *、string之间的相互转换 字符集 在VC2012中,字符集默认采用Unicode字符集(Use Unicode Charecter Set选项),其值还可以设置为多字节字符集(Use Multi-Byte Charecter Set)。 为什么要使用Unicode 可以很容易地在不同语言之间进行数据交换。使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。提高应用程序的运行效率。 阅读详情

相关推荐

C++中宽字符集wchar_t与窄字符集char的转换

在处理不同语言、字符集和编码时,我们经常需要在宽字符集(wchar_t)和窄字符集(char)之间进行转换。本文将详细介绍如何在C++中进行wchar_t和char之间的转换,并提供相应的源代码示例。通过使用标准库函数和宽字符编码转换函数,我们可以在不同字符集之间进行转换。请注意,在进行字符转换时,要确保目标字符串的大小足够容纳转换后的结果,并且正确设置源字符串和目标字符串的长度参数。此外,还需要注意字符集和编码的一致性,以确保正确的转换结果。通过以上示例代码,我们可以将宽字符和窄字符之间进行相互转换。

zhouKouUU的博客 1149

c++交换字符方法大全

c++交换字符方法大全: 交换1:反向输出法: 其实就是将字符串数组一个一个从最后一个输出到屏幕上,并没有改变数组本身内容。 /************************************/ /**交换1:反向输出法 */ #include<iostream> #include<cstring> #include<cstdio> using namespace std; int main(){ char a[10]; int i;

yyj的博客之旅 8162

sicily1007题

sicily1007题答案,附代码解释,可以在平台上通过

C++ <string>常用函数记录

【代码】C++ <string>常用函数记录。

lichengyang的博客 640

c/c++ 字符集转换

c/c++ 字符集转换[静态库,实例解析],libiconv

【强化学习】11 —— Double DQN算法与Dueling DQN算法

可以看到由于数据点的分布,使得拟合出的价值函数无法与真实的价值函数吻合,甚至在部分区域产生了明显的偏差。Dueling DQN 是 DQN 另一种的改进算法,它在传统 DQN 的基础上只进行了微小的改动,但却能大幅提升 DQN 的表现。这样,即使其中一套神经网络的某个动作存在比较严重的过高估计问题,由于另一套神经网络的存在,这个动作最终使用的值不会存在很大的过高估计问题。.在同一个状态下,所有动作的优势值之和为 0,因为所有动作的动作价值的期望就是这个状态的状态价值。环境的状态包括倒立摆角度的正弦值。

sinat_52032317的博客 1万+

信息学奥赛一本通(c++)题号:1007

1007:计算(a+b)×c的值 题目描述 给定3个整数a、b、c,计算表达式(a+b)×c的值。 输入 输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。(-10,000<a,b,c<10,000) 输出 输出一行,即表达式的值。 输入样例 2 3 5 输出样例 25 代码 #include <iostream> using namespace std; int main(){ int a,b,c; cin>>a>>b&

北港 729

炼丹-Pyecharts: JupyterLab无法render_notebook

炼丹-Pyecharts: JupyterLab无法render_notebook问题描述Jupyter-Lab 环境下render_notebook显示空白 问题描述Jupyter-Lab 环境下render_notebook显示空白 首先需要使用pyecharts自带的config来申明一下使用pyecharts的运行环境 from pyecharts.globals import Curre...

MichaelZzzzz的博客 4687

【C++】1007 素数对猜想

easy:根据条件求所给范围内的相邻素数。

一只不想做程序员的程序猿的日常摸鱼分享 557

Windows11 升级到24H2后,原本的protel99se软件的DDB图纸文件打不开解决办法

Windows11更新后无法打开DDB文件

xingchen2837的博客 414

别再死磕Excel了!用Vensim PLE免费版,30分钟搞定你的第一个系统动力学模型

本文介绍如何使用Vensim PLE免费版在30分钟内构建第一个系统动力学模型,无需编程或数学基础。通过个人储蓄增长案例,详细讲解因果回路图绘制、存量流量图创建及方程编写,帮助读者掌握动态系统建模与仿真技巧,适用于理财、项目管理等多种场景。

weixin_29045001的博客 328

C++字符集的相互传换 and sqlite3_open 返回14

sqlite3_open 返回14,文件路径包含中文。 解决方法:插入前,把SQL语句转UTF8格式。 C++字符集的相互传换    #include #include #include using namespace std;   //utf8 转 Unicode std::wstring U

chuanyituoku的专栏 2581

Android开发者必看:火山引擎API验签实战,5分钟搞定年龄变化接口调用

本文为Android开发者提供火山引擎API验签实战指南,重点解析HMAC-SHA256签名算法实现,并以年龄变化接口为例展示完整调用流程。通过OkHttp封装和性能优化建议,帮助开发者5分钟内快速集成火山引擎人像处理功能,解决API调用中的签名验证、参数编码等核心问题。

weixin_30342209的博客 317

C++~CString和string相互转化、string和数字相互转换、Cstring和char *相互转化

一、string转CString string str = "hello world"; CString cstr(str.c_str()); 二、CString转string CString theCStr = L"Hello C++"; std::string STDStr(CW2A(theCStr.GetString()));

仰望星空的博客 1390

「HTML和CSS入门指南」hr 标签详解

标签是 HTML5 中用于插入水平分割线的标签,常用于在页面中添加分隔线或者段落之间的分割线。通过灵活运用 标签和属性,我们可以帮助用户更好地理解页面内容,同时也可以美化和装饰页面。在实际应用中需要注意避免过度使用 标签,以使页面看起来简洁明了。

a451319296的博客 7661

华为od 面试八股文_Python_05_含答案

华为od 面试八股文_Python_05_含答案

MISAYAONE的博客 2556

字符集转换

windows字符集 文章目录windows字符集前言一、多字节&宽字节二、多字节&宽字节 字符串转换1.多字节转为宽字节2.统计多字节&宽字节字符串长度三、char *、CString(MFC)、string(C++ stl) 相互转换1.char * 与 CString之间的转换2.char * 与 string之间的转换3.CString 与 string之间的转换总结 前言 简介:windows字符集种类&字符集间转换(C++) 提示:以下是本篇文章正文内容,

duaiziwodexiuluo的博客 645

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

字符编码之间的相互转换 UTF8与GBK

UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文

wangchaoqi1985的博客 5058

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Visual C++程序的相互调用 向黑客迈进!!!

Visual C++程序的相互调用 向黑客迈进!! 最近有同学问我怎样用VC++进行程序的相互调用,难倒了我。因为我的VC++的程序调用也不会。怎么办?没法回答别人的问题,只好自己摸索了。我在今天利用上网和查阅MSDN终于解决了这个问题。为了不让其它的同学再走弯路,我就将自己的解决方法告诉大家,希望对大家有所用处。 大家肯定下载过很多的程序,也看过程序之间有这相互调用的现象。这并不奇怪,因

开发游戏,辉煌全中国 1864

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Windows平台上宽窄字符集的相互转换的方法

在Windows平台上进行字符集转换,核心是理解和这两个API。正确使用它们需要关注编码类型、缓冲区管理、错误处理等细节。随着Windows对Unicode支持的日益完善,UTF-8和UTF-16已成为主流的编码选择。理解这些转换机制,能帮助我们在处理国际化文本、文件I/O、网络通信等场景时避免许多编码相关的问题。在实际开发中,建议将转换逻辑封装成可重用的工具函数,并始终进行充分的错误处理。这样不仅能提高代码的健壮性,也能让主逻辑更加清晰易读。

静下心来,做好每一件事 557

C++字符串之间转化——Unicode字符集

本文主要介绍:Unicode字符集下字符串之间以及字符串与数字之间的转化。 1.string、char*与 const char* <1>string->char*char *ctr = new char[str.length()+1]; strcpy(ctr,str.c_str()); delete[]ctr; //用完后释放字符串<2>string->const char*

hong__fang的专栏 6168

MBCS与UNICODE字符集相互转换.

不同语言的操作系统默认的MBCS不一样, 有时需要与UNICODE相互转换. 代码如下: #include #include #include #include using namespace std; wstring MultiCharToWideChar(string str) { //获取大小,分配空间 int len = MultiByteToWid

zyipie的专栏 972

c++宽字符和多字节字符相互转化类

多字节字符(multibyte character):每个字符可以是一到多个字节不等,而某个字节序列的字符值由字符串或流(stream)所在的环境背景决定。        宽字符:对宽字符的支持其实是ANSI C标准的一部分,用以支持多字节表示一个字符。宽字符和Unicode并不完全等同,Unicode只是宽字符的一种编码方式。在ANSI中,一个字符(char)的长度为一个字节(Byte)。使用

lgp88的专栏 3586

unicode WCHAR 与多字符集char相互转换

多字符集转UNICODE字符集: //mbs(char) to wcs (CString) //多字符集转为UNICODE字符集 CString mbs2wcs(LPCSTR mbstr) { CString cstr = L""; size_t aLen = strlen(mbstr) + 1; int wLen = MultiByteToWideChar(CP_ACP, 0, mbs

本博客纯属个人学习记载,不对外负责,若有错误,请批评指正 1944

C++  Unicode/UTF-8中文 相互转换

Unicode 字符串转UTF-8 输出中文 需求 中文 ”你好啊“ ----------unicode----------> \u4F60\u597D\u554A 现在有个这个需求: 接收到 unicode编码 的字符串,显示成中文。 例:接收到 “4F60597D554A” 需要转换成中文 "你好啊” 不多说,直接上代码 解决方式 // 这里使用C++11 的 codecvt_utf8 #include <codecvt> #include <locale> con

佛之水月的专栏 9074
上一篇: WINDOWS SDK 检测U盘插入
下一篇: vlc 命令行使用帮助
Amy_1007
博客等级 码龄17年 44粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值