Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C++中的unicode字符串操作

C++中的unicode字符串操作
EN

Stack Overflow用户
提问于 2014-04-26 10:26:38
回答 1查看 484关注 0票数 0

我在linux mint 15中使用的是gcc,我的终端支持unicode。我将处理UTF-8。我正在尝试获取一个更复杂的unicode字符串的基本单词。有点像把“alternative”这个词改成了“alternat”,但用的是不同的语言。因此,我需要测试每个单词的结尾。

在c和ASCII中,我可以做这样的事情。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(string[last_char]=='e')
    last_char-=1; //Throws away the last character

我能用unicode做类似的事情吗?也就是说,就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(string[last_char]=='ഒ')
    last_char=-1
EN

回答 1

Stack Overflow用户

发布于 2014-04-26 10:41:18

编辑:对不起,正如@chux所说,我刚刚通知你用C语言提问。不管怎样,同样的原则也适用。

在C中,您可以使用wscanfwprintf对宽字符字符串执行I/O操作。如果你的角色在BMP中,你就不会有问题。只需用wchar_t *替换char *,就可以像往常一样做各种事情。

对于严肃的开发,我建议将所有字符串转换为char32_t进行处理。或者使用像ICU这样的库。

如果您只需要删除字符串中的一些给定字符,那么您可能不需要复杂的unicode字符处理。将unicode字符视为原始char *字符串,并对其执行任何字符串操作。

下面转载了旧的面向C++的答案,以供参考。

简单的方法

使用std::wstring

它基本上是一个std::string,但输入的是单个字符wchar_t

对于IO,您应该使用std::wcinstd::wcout。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
std::wstring str;
std::wcin >> str;
std::wcout << str << std::endl;

但是,在某些平台上,wchar_t是2字节宽的,这意味着BMP之外的字符将不起作用。我认为这对你来说应该没问题,但不应该在严肃的开发中使用。有关此主题的更多文本,请阅读this

艰难的道路

使用更好的支持unicode的字符串处理库,如ICU

C++11方式

使用一些机制将输入字符串转换为std::u32string,就完成了。转换例程可以是手工创建的,也可以使用现有的库,如ICU。

由于std::u32string是使用char32_t形成的,因此您可以放心地假定您正确地处理了Unicode。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23309571

复制
相关文章
c++ unicode
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
sofu456
2019/12/10
7370
js --- 中字符串与unicode编码
2、charCodeAt ():在第一个的基础上,返回的是字符的unicode编码
小蔚
2019/09/11
4.9K0
Unicode 字符串
引号前小写的"u"表示这里创建的是一个 Unicode 字符串。如果你想加入一个特殊字符,可以使用 Python 的 Unicode-Escape 编码。如下例所示:
用户8442333
2021/05/27
1K0
c++ unicode编码
stl 宏定义,使string和wstring通知支持 #ifdef _UNICODE #define tstring wstring #else #define tstring string #endif // _UNICODE #boost boost boost::log 只创建文件ascii文件,unicode需要转换后写入文件 wstring 转string boost::locale::conv::from_utf(wstr, “GBK”); string转wstring
sofu456
2022/05/06
1K0
unicode字符串解析
在http接口接收时,很多接口提供方都喜欢把汉字通过unicode的方式传过来,而数字和字母保持不变,就像这样。
逝兮诚
2019/10/30
1.4K0
C++ 字符串操作函数
由于字符串使用广泛,C和C++提供了一些字符串函数,包括字符串连接函数strcat,字符串复制函数strcpy,字符串比较函数strcmp,字符串长度函数strlen,在C语言中被定义在string.h中定义。在C++中被定义在cstring和string中。
chaibubble
2019/05/26
2.6K0
C++中的链式操作
链式操作是利用运算符进行的连续运算(操作),它的特点是在一条语句中出现两个或者两个以上相同的操作符,如连续的赋值操作、连续的输入操作、连续的输出操作、连续的相加操作等都是链式操作的例子。
恋喵大鲤鱼
2018/08/03
1.3K0
C++中的链式操作
VB中Unicode的转换
    VB本身的字符串格式就是Unicode,用Winsock发送字符串的话,会默认把字符串转换为Ansi的格式进行发送。Ansi格式,对于英文符号等仍然使用单字节,汉字使用双字节。如果需要进行转换的话,可以用StrConv来进行。     如:           Dim   byteFileName()   As   Byte             byteFileName   =   StrConv(m_filename,   vbFromUnicode)       '   Conver
用户1075292
2018/01/23
1.9K0
C++中字符串的分割
下面开始正题,C++中字符串的分割。 1. 使用strtok函数进行字符串的分割 2. 使用stringstream类配合getline函数进行字符串的分割 3. 使用STL的find函数以及字符串类的substr函数进行字符串分割
卡尔曼和玻尔兹曼谁曼
2019/01/22
7.2K0
C++中字符串的分割
Python 中的字符串操作
又有好久不总结知识点了,大三不仅专业课程变多了,其他事情也多了。最近各种熬夜、码码。。。唉,说好的大学生活好呢? 好了,不扯淡了,最近研究了一下 Python,今天来看一下 Python 中的字符串相关操作。
指点
2019/01/18
9350
Python 中的字符串操作
python中的字符串操作
BIF就是Built-in Functions,内置函数。为了方便程序员快速编写脚本程序,Python提供了非常丰富的内置函数,我们只需要直接调用即可,例如print()的功能是“打印到屏幕”,input()的作用是接收用户输入。注:Python3用input()取代了Python2的raw_input()。
用户7886150
2021/01/09
8910
Python中字符串的操作
注意事项:字符串中的所有更改操作都只能通过重新赋值才可使用,并不会直接在内存中修改
py3study
2020/01/17
8900
Python 中文转Unicode字符串
Python 3.6 代码: # -*- coding: utf-8 -* def to_unicode(string): ret = '' for v in string: ret = ret + hex(ord(v)).upper().replace('0X', '\\u') return ret print(to_unicode("中国")) 输出: "D:\Program Files (x86)\Python36-32\python.exe" E:
py3study
2020/01/13
2.7K0
第九节、Python中Unicode字符串《Python学习》
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
申霖
2019/12/27
6940
Java中字符串与Unicode编码互转工具方法
在开发中常常需要从配置文件中读取配置,但是在读取中文时可能会出现乱码,这时可以将中文转为Unicode编码,再读取,然后转码。在Api接口传输数据时也经常用到! 字符串转为Unicode编码 /** * 将字符串转为Unicode编码 * @param string * @return */ public static String encodeUnicode(String string){ StringBuffer unicode = ne
4xx.me
2022/06/09
2.1K0
C++中的数组类型操作
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
鲸落c
2022/11/28
1.5K0
C++ 中的原始字符串文字及C++ 中的字符串数组(1-2)
theme: channing-cyan highlight: a11y-dark
鲸落c
2022/11/14
1.8K0
C++中对字符串的分割
由于C++中没有split函数,因此,为了能够对获取的字符串进行按一定符号进行分割,在此学习了通过字符串的find()方法和substr()方法来实现split();具体描述如下:  //涉及到string类的两个函数find和substr:  //  //1、find函数  //原型: size_t find(const string& str, size_t pos = 0) const;  //功能: 查找子字符串第一次出现的位置。  //参数说明:str为子字符串,pos为初始查找位置。  //返回值: 找到的话返回第一次出现的位置,否则返回string::npos  //2、substr函数  //原型: string substr(size_t pos = 0, size_t n = npos) const;  //功能: 获得子字符串。  //参数说明:pos为起始位置(默认为0),n为结束位置(默认为npos)  //返回值: 子字符串
用户7886150
2021/01/16
2.3K0
[Swift] Swift 中字符串相关的操作
上述遍历得到的字符是 Character 类型的。通过 type(of:) 可以查看某个变量的类型。
CnPeng
2021/01/18
1.9K0
点击加载更多

相似问题

纯C++中的Unicode字符串

61

C++中的Unicode字符串处理

22

C++中的Unicode字符串索引

57

C++/CLI中的unicode字符串文本

14

带boost的c++中的unicode字符串

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文