C类++C++11语言C++14语言C++17语言功能学习C++语法

Windows上C++中的Unicode字符串

在编程中,最常用的变量之一是文本字符串,在存储和检索有价值的数据时,它们有时非常重要。以其语言和本地化安全地存储数据非常重要。大多数编程语言在存储文本和字母时都有问题。在C++中,有非常古老的众所周知的字符串类型(字符数组)和现代类型的标准::basic_string类型,如标准::字符串和std::wstring。除了这些现代字符串类型之外C++生成器还有另一个惊人的字符串功能Unicode字符串在这篇文章中,我们解释了现代C++中的UnicodeString是什么以及如何实现。

C++中的字符串类型是什么?

一般来说,C++中有3种类型的字母数字字符串声明;

  • 字符数组(请参见基本类型)
    字符是ASCII格式的,这意味着每个字符都有1字节(8位)大小(这意味着您有0到255个字符)
  • 基本字符串(标准::basic_string)
    这个basic_string(标准::basic_string标准::pmr::basic_string)是一个类模板,用于存储和操作字母数字字符串对象(char、w_char…)的序列。基本字符串可用于定义字符串、wstring、u8string、u16string和u32string数据类型。
  • 字符串Unicode字符串
    The Unicode字符串字符串类型是默认值字符串UTF-16格式的RAD Studio、C++Builder、Delphi类型,这意味着UTF-16中的字符可能是2或4个字节。在C++Builder和Delphi中;Char和PChar类型现在分别是WideChar和PWideChar。有一篇关于RadStudio中的Unicode.

此外,我们以前在C++Builder和Delphi中使用过一些旧的字符串类型,

  • AnsiString公司
    以前字符串是AnsiString的别名。对于RAD Studio、C++Builder和Delphi,AnsiStrin的格式已更改。已添加CodePage和ElemSize字段。这使得AnsiString的格式与新UnicodeString的相同。
  • 宽字符串
    WideStrings以前用于Unicode字符数据。其格式与Windows BSTR基本相同。WideString仍然适用于COM应用程序。

什么是C++Builder中的UnicodeString(String)?

Unicode码标准Unicode字符串为超过ASCII(8位)字符的每个字符(8、16或32位)提供唯一的数字。由于支持全球语言和表情符号,UnicodeString被广泛使用。在当今的现代C++中,使用了两种类型的字符串;字符数组(字符字符串)和现代字符串,例如标准::字符串标准::wstringUnicode字符串(默认类型字符串). 大多数编译器、IDE都在其GUI表单和组件中使用这些新的字符串标准,以支持提供全局应用程序的所有语言。

在C++Builder中,还有其他字符串类型,如WideStrings和AnsiStrings。它们现在更旧了,不兼容现代编程的所有功能。可以找到有关Unicode字符串结构的更多信息在这里.RAD Studio、Delphi和C++Builder使用基于Unicode的字符串:即类型字符串是Unicode字符串(系统。Unicode字符串)而不是ANSI字符串。如果您想将代码转换为Unicode字符串,我们建议您这篇文章.

什么是现代C++中的basic_string?

这个basic_string(标准::basic_string标准::pmr::basic_string)是一个类模板,用于存储和操作字母数字字符串对象(char、w_char…)的序列。例如,str::字符串标准::wstring是由标准::basic_string<char>换句话说,basic_string用于定义不同的data_type,这意味着basic_string不仅是字符串,而且是通用字符串格式的命名空间。基本字符串可用于定义字符串、wstring、u8string、u16string和u32string数据类型。

basic_string类既不依赖于字符类型,也不依赖于该类型上操作的性质。操作的定义通过特征模板参数(即std::chartraits的专门化)或兼容的traits类。这个基本字符串连续存储元素。

基本字符串定义提供了几种常用字符类型的字符串类型,如下所示,

字符串类型基本字符串定义标准
标准::字符串标准::basic_string<char>
标准::wstring标准::basic_string
标准::u8string标准::basic_string<char8_t>(C++20)
标准::u16string标准::basic_string<char16_t>(C++11)
标准::u32string标准::basic_string<char32_t>(C++11)

几种字符串类型标准::pmr基本字符串定义也提供了通用字符类型的名称空间。下面是关于基本字符串类型及其文字的更多详细信息。

请注意,您可以在C++Builder中同时使用std::basic_string(std::string,std::wstring,std::u16string,…)/std::pmr和UnicodeString类型。

如何在C++Builder中使用UnicodeString?

下面是一些现代示例,您可以如何将字符串与UnicodeString类型一起使用,

如何声明Unicode字符串

L(左)此处为字符串文字,表示wchar_t型文字;在这里u8型u个U型文字也可以使用。这些可能是编辑器和/或编译器选项中的默认值,这意味着如果知道默认值,就不需要添加。字符串文字是由双引号包围的字符序列,可以选择以R、u8、u8R、u、uR、u、uR、L或LR为前缀,如“…”、R“(…)”、u8“…”和u8R“(…)“,u”…“,uR”˜(…)分别是“、U”…“、UR”zzz(…)zzz“、L”…“或LR”(…)“。请参阅本文档中的字符串文字部分程序设计语言C标准工作草案++。下面我们总结了C++中使用的一些标准。以下是一些例子,

字符串定义的字符串文字示例

  • str=“abcd”;基于编译器/IDE选项的默认字符串。
  • str=u8“abcd”;UTF-8字符串文字,并使用UTF-8编码的给定字符初始化,包括空终止符
  • str=u“abcd”;char16t字符串文本。char16_t字符串文字的类型为“array of n const char16_ts”,包括null终止符
  • str=U“abcd”;char32t字符串文字。char32_t字符串文字的类型为“array of n const char32 _t”,包括null终止符
  • str=L“abcd”;宽字符串文字。宽字符串文字的类型为“array of n const wchar_t”,包括null终止符
  • str=R“abcd”;原始字符串

C中L“”和U“”以及U“”文字的区别是什么++

  • L基于宽字符串文字依赖于编译器/IDE选项中的n const wchar_t数组。通常为UTF-8或UTF-16格式
  • u表示UTF-16格式,
  • U代表UTF32格式

Unicode字符串的长度

Unicode字符串的大小

如何访问/读取Unicode String的字符:

如何更改Unicode字符串的字符

如何在Unicode字符串中查找字符串的位置

将Unicode字符串转换为整数

将Unicode字符串转换为双精度
将Unicode字符串转换为浮点

将Unicode字符串转换为小写

将Unicode字符串转换为UpperCase

将Unicode字符串转换为字符字符串

如果您需要转换为低级别(char),这意味着低级别变量需要更高级别(unicode),则不建议从高数字字符转换为低数字字符,否则可能会丢失一些unicode字符,从而导致字符字符串中的字符丢失或错误。

将Unicode字符串转换为ANSI字符串

将Unicode字符串转换为宽字符串

Unicode字符串的子字符串

将字符串插入UnicodeString

删除/修剪部分Unicode字符串

比较Unicode字符串

修剪Unicode字符串中的空格和控制字符

有关上述命令和属性的详细信息,请查看UnicodeString方法和属性UnicodeString类型Unicode字符串威尔基。

C++14 C++Builder徽标中范围的新重载是什么

C++生成器是在Windows操作系统上构建简单或专业应用程序的最简单、最快的C和C++编译器和IDE。对于初学者来说,它也很容易学习,它有广泛的示例、教程、帮助文件和对代码的LSP支持。RAD Studio的C++Builder版本附带用于高性能本机Windows应用程序的屡获殊荣的VCL框架和用于UI的强大FireMonkey(FMX)框架。

有一个免费的C++Builder社区版,面向学生、初学者和初创公司;可以从下载在这里。对于专业开发人员,有专业版、架构师版或企业版的C++Builder,也有试用版可从下载在这里.



哦,你好👋
很高兴见到你。

注册后,每天都可以在收件箱中接收很棒的C++内容。

我们不发垃圾邮件!阅读我们的隐私政策了解更多信息。


使用RAD Studio、Delphi或C++Builder缩短开发时间并更快地推向市场。
设计。代码。编译。部署。
开始免费试用

免费C++Builder社区版

关于作者

Yilmaz Yoru博士有35年以上的编码经验,使用了30多种编程语言,主要是Windows、Android、Mac-OS、iOS、Linux和其他一些操作系统上的C++。他毕业于Eskisehir Osmangazi大学机械工程系,并获得硕士和博士学位。他是ESENJA LLC公司的创始人兼首席执行官。他的兴趣是编程、热力学、流体力学、人工智能、2D和3D设计以及高端创新。
相关职位
C类++C++11语言C++14语言C++17C++20语言C简介++学习C++

如何学习现代C++中的Move构造函数?

C类++C++17代码段学习C++

如何在C++中正确地将字符数组字符串转换为Unicode字符串?

人工智能技术C类++语言功能学习C++

如何用C语言开发简单的Hopfield网络++

C类++C++11语言C++14语言C++17C++20语言C简介++学习C++语法

学习现代C语言中类的默认构造函数++

值得一读。。。
2020年Windows的顶级C++编译器