C++宽字符与普通字符的转换实例详解
C++宽字符与普通字符的转换实例详解
把字符串转换成宽字符串,
实例代码:
wstring string2Wstring(string sToMatch) { #ifdef _A_WIN int iWLen = MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), 0, 0 ); // 计算转换后宽字符串的长度。(不包含字符串结束符) wchar_t *lpwsz = new wchar_t [iWLen + 1]; MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), lpwsz, iWLen ); // 正式转换。 lpwsz[iWLen] = L'/0'; wstring wsToMatch(lpwsz); delete []lpwsz; #elif _A_LINUX setlocale( LC_CTYPE, "" ); // 很重要,没有这一句,转换会失败。 int iWLen = mbstowcs( NULL, sToMatch.c_str(), sToMatch.length() ); // 计算转换后宽字符串的长度。(不包含字符串结束符) wchar_t *lpwsz = new wchar_t[iWLen + 1]; int i = mbstowcs( lpwsz, sToMatch.c_str(), sToMatch.length() ); // 转换。(转换后的字符串有结束符) wstring wsToMatch(lpwsz); delete []lpwsz; #endif return wsToMatch; } //把宽字符串转换成字符串,输出使用 string wstring2string(wstring sToMatch) { #ifdef _A_WIN string sResult; int iLen = WideCharToMultiByte( CP_ACP, NULL, sToMatch.c_str(), -1, NULL, 0, NULL, FALSE ); // 计算转换后字符串的长度。(包含字符串结束符) char *lpsz = new char[iLen]; WideCharToMultiByte( CP_OEMCP, NULL, sToMatch.c_str(), -1, lpsz, iLen, NULL, FALSE); // 正式转换。 sResult.assign( lpsz, iLen - 1 ); // 对string对象进行赋值。 delete []lpsz; #elif _A_LINUX int iLen = wcstombs( NULL, sToMatch.c_str(), 0 ); // 计算转换后字符串的长度。(不包含字符串结束符) char *lpsz = new char[iLen + 1]; int i = wcstombs( lpsz, sToMatch.c_str(), iLen ); // 转换。(没有结束符) lpsz[iLen] = '/0'; string sResult(lpsz); delete []lpsz; #endif return sResult; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
浅谈c++ 字符类型总结区别wchar_t,char,WCHAR
1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数. UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里: typedef unsigned short wchar_t; 另外,在头文件中有这样的定义:typedef wchar_t WCHAR; 所以WCHAR实际就是wchar_t wchar_t 可用字符串处理函数:wcscat(),wcscpy(
-
C++实现从输入中读取字符串
你可以用这种方式读取一个单独的以空格结束的词: #include<iostream> #include<string> using namespace std; int main(){ cout << "Please enter a word:\n"; string s; cin>>s; cout << "You entered " << s << '\n'; } 注意,这里没有显式
-
C++计算每个字符出现的次数
本文实例为大家分享了C++计算每个字符出现的次数的实现代码,供大家参考,具体内容如下 #include <iostream> //#include <cstdlib> #include <ctime> using namespace std; const int NUMBER_OF_LETTERS = 26; const int NUMBER_OF_RANDOM_LETTERS = 100; void createArray(char []); void display
-
C++ 字符串去重排序实例代码
C++ 字符串去重排序实例代码 入一个字符串,去掉重复出现的字符,并把剩余的字符串排序输出. 实现代码: #include <iostream> #include <string> using namespace std; void sort(string s) { char tmp[100]; int len=s.size(); int count=0,i,j; for (i=0;i<len;i++) { for (j=i+1;j<len;j++) { if (s[
-
C++统计中英文大小写字母、数字、空格及其他字符个数的方法
本文实例讲述了C++统计中英文大小写字母.数字.空格及其他字符个数的方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * 完成日期:2012 年 11 月 28 日 * 版 本 号:v1.0 * 输入描述: * 问题描述: 有一篇文章,共有三行文字,每行有80个字符.要求分别统计出其中英文大写字母.小写字母.数字.空格以及其他字符的个数. * 程序输出: * 问题分析:略 * 算法设计:略 */ #include<iostream> using namespace std;
-
C++中输出十六进制形式的字符串
前言 在进行 i18n 相关的开发时,经常遇到字符编码转换的错误.这时如果能把相关字符串用十六进制的形式打印出来,例如,"abc" 输出成 "\\x61\\x62\\x63" 这对于 i18n 的除错来说是很有帮助的.Python 里面,只需要使用 repr() 函数就行了.可在 C++ 中如何做到这点呢? 下面是用 ostream 的格式化功能的一个简单的实现: std::string get_raw_string(std::string const& s
-
c++中数字与字符串之间的转换方法(推荐)
1.字符串数字之间的转换 (1)string --> char * string str("OK"); char * p = str.c_str(); (2)char * -->string char *p = "OK"; string str(p); (3)char * -->CString char *p ="OK"; CString m_Str(p); //或者 CString m_Str; m_Str.Format(&q
-
C++宽字符与普通字符的转换实例详解
C++宽字符与普通字符的转换实例详解 把字符串转换成宽字符串, 实例代码: wstring string2Wstring(string sToMatch) { #ifdef _A_WIN int iWLen = MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), 0, 0 ); // 计算转换后宽字符串的长度.(不包含字符串结束符) wchar_t *lpwsz = new wchar_t [iWLen + 1];
-
java与JSON数据的转换实例详解
java与JSON数据的转换实例详解 JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 代码中有这么一句,是后台的封装数据. JSONObject jo = JSONObject.fromObject(map); 常见的java代码转换成json --请注意,这个方法曾经给我造成过困惑.因为,它在对Object转换的时候是按照domain类中的所有getXXX()方
-
java 进制转换实例详解
java 进制转换实例详解 十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i) 十六进制转成十进制 Integer.valueOf("FFFF",16).toString() 八进制转成十进制 Integer.valueOf("876",8).toString() 二进制转十进制 Integ
-
C/C++ ip地址与int类型的转换实例详解
C/C++ ip地址与int类型的转换实例详解 前言 最近看道一个面试题目,大体意思就是将ip地址,例如"192.168.1.116"转换成int类型,同时还能在转换回去 思路 ip地址转int类型,例如ip为"192.168.1.116",相当于"."将ip地址分为了4部分,各部分对应的权值为256^3, 256^2, 256, 1,相成即可 int类型转ip地址,思路类似,除以权值即可,但是有部分字符串的操作 实现代码 #include &l
-
Android Drawable和Bitmap的转换实例详解
Android Drawable和Bitmap的转换实例详解 通常我们需要通过代码去设置图片,就需要设置图片Bitmap和Drawable的转换,下面整理了几种方式 一.Bitmap转Drawable Bitmap bm=xxx; //xxx根据你的情况获取 BitmapDrawable bd=new BitmapDrawable(bm);//因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可. 二. Drawable转Bitmap Drawable d=xxx;
-
C++ 中时间与时间戳的转换实例详解
C++ 中时间与时间戳的转换实例详解 // 设置时间显示格式: NSString *timeStr = @"2011-01-26 17:40:50"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateStyle:NSDateFormatterMediumStyle]; [formatter setTimeStyle:NSDateFormatterShortStyle]; [fo
-
pandas和spark dataframe互相转换实例详解
这篇文章主要介绍了pandas和spark dataframe互相转换实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 from pyspark.sql import SparkSession # 初始化spark会话 spark = SparkSession \ .builder \ .getOrCreate() spark_df = spark.createDataFrame(pandas_df) spark的dataframe转pa
-
python数据类型强制转换实例详解
1.字符强转一切 如果是字符串进行强制转换, 仅仅就是在原数据类型的两边套上引号 2.list : 强制转换成列表 """ 如果是字符串,会把每一个字符都单独作为一个元素放到新的列表中 如果是字典,只保留键,形成一套新的列表. 如果是其他容器,只是单纯的在原数据的两边套上[] """ res = list(tuplevar) res = list(setvar) res = list(strvar) res = list(dictvar) # 把
-
Java 中 Date 与 Calendar 之间的编辑与转换实例详解
Java语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分.日期是商业逻辑计算一个关键的部分.所有的开发者都应该能够计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象. 下面通过代码给大家介绍Java 中 Date 与 Calendar 之间的编辑与转换. 具体代码如下所述: /** * 移除 Data 中的时间部分 */ public static Date removeTime(Date date)
-
C++ 中字符串操作--宽窄字符转换的实例详解
C++ 中字符串操作--宽窄字符转换的实例详解 MultiByteToWideChar int MultiByteToWideChar( _In_ UINT CodePage, _In_ DWORD dwFlags, _In_ LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_opt_ LPWSTR lpWideCharStr, _In_ int cchWideChar ); 参数描述: CodePage:常用CP_ACP.CP_UTF8 dwF
随机推荐
- CFC4N小试php正则表达式
- windows server 2008/2012安装php iis7 mysql环境搭建教程
- Microsoft .Net Remoting系列教程之二:Marshal、Disconnect与生命周期以及跟踪服务
- 犀利的js 函数集合
- Android UI之ImageView实现图片旋转和缩放
- python 根据正则表达式提取指定的内容实例详解
- python数据结构之链表的实例讲解
- Vue.2.0.5过渡效果使用技巧
- 详解MySQL中concat函数的用法(连接字符串)
- 在MySQL中创建实现自增的序列(Sequence)的教程
- python操作CouchDB的方法
- 如何提高PHP速度第1/3页
- Effective C# 使用成员初始化器而不是赋值语句
- Android性能优化之利用强大的LeakCanary检测内存泄漏及解决办法
- jQuery热气球动画半透明背景的后台登录界面代码分享
- 千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
- 局域网内架设DNS服务器要谨慎
- 探讨:android项目开发 统筹兼顾 需要考虑的因素
- PHP5.0正式发布 不完全兼容PHP4 新增多项功能
- 使用php通过Socket进行发信源码,支持发信认证