• 首页
  • QQ头像
  • 图片
  • QQ网名
  • QQ皮肤
  • QQ分组
  • 签名
  • QQ说说
  • 词句
  • 日志
  • 知道
  • 收起

AnsiString和String的区别,使用(python中字符串前的r什么意思)【ansistring和string的区别】

AnsiString和String的区别,使用(python中字符串前的r什么意思)【ansistring和string的区别】

大家好,今天小华关注到一个比较有意思的话题,就是关于UnicodeString的问题,于是小编就整理了3个相关介绍UnicodeString的解答,让我们一起看看吧。

文章目录:

  1. AnsiString和String的区别,使用
  2. python中字符串前的r什么意思
  3. 如何将string类转换为支持UNICODE和ANSI的C字符串啊

一、AnsiString和String的区别,使用

原来的Delphi中有两种字符串:AnsiString和WideString。默认的string即AnsiString。而在Delphi 2009中,

新增加了一种UnicodeString。为什么不沿用之前的WideString呢?WideString其实是为了方便使用COM而产生的,就是BSTR。

BSTR没有引用计数,效率较低。而UnicodeString才是AnsiString的真正unicode版本。

于是,Delphi 2009就有了三种字符串类型:AnsiString、WideString、UnicodeString。默认的string即为UnicodeString。

对应的相关类型包括:

AnsiString - PAnsiChar - TAnsiString?(这个可以有……这个真没有,JclAnsiStrings.pas是一个替代品)

WideString - PWideChar - TWideStrings(WideStrings.pas)

UnicodeString - PWideChar - TStrings(Classes.pas)

在实际应用中,一般应使用UnicodeString。在效率第一的场合,可以使用AnsiString处理Ansi文本。而WideString仅在使用COM的

时候才需要,或者是为了向下兼容。

几个字符串相关unit的作用:(D2009有点乱)

StrUtils.pas:UnicodeString的处理函数。

AnsiStrings.pas:AnsiString的处理函数。

WideStrUtils.pas:WideString的处理函数。

WideStrings.pas:TWideStringList的实现。

Classes.pas:TStringList的实现。

JclAnsiStrings.pas:TJclAnsiStringList的实现。这个虽然是第三方库,但不得不提,谁让CodeGear好死赖活不肯加呢。

Delphi 2009的VCL完全使用UnicodeString,彻底支持Unicode。TNT Unicode Controls终于完成了光辉的历史使命。

VCL设计之初不支持Unicode情有可原,但多年以后,在国际化的大潮中,依然没有改变,就是重大失误了。

13年的等待,黄花菜都凉了。不论如何,今日的Delphier,可以放心大胆的使用Unicode了。

关于UTF8String。UTF8String在之前的版本中就是AnsiString,没有什么特殊功能。而在Delphi 2009中,

UTF8String才是真正的UTF8。如果把一个AnsiString赋值给一个UTF8String,那么Delphi 2009会自动转换格式为UTF8String,

这比以前可要方便多了。

关于RawByteString。这个在某些场合有用。如果你有一个函数,接受AnsiString或者UTF8String,但不希望发生自动转换,

那么可以通过重载,实现两个函数分别处理AnsiString和UTR8String。另一个选择就是使用RawByteString,那么不管传过来

的是AnsiString还是UTF8String,RawByteString都会忠实的保持原样,不会做任何转换。

二、python中字符串前的r什么意思

Python中,u表示unicode

string,表示使用unicode进行编码,没有u表示byte

string,类型是str,在没有声明编码方式时,默认ASCI编码。如果要指定编码方式,可在文件顶部加入类似如下代码:

#

-*-

coding:

utf-8

-*-

 

utf-8是一种支持中文的编码格式。

字母前加r表示raw

string,也叫原始字符串常量。一般用在一下两个方面:

1、正则表达式

用于处理正则表达式时,规避反斜杠的转义

2、系统路径

如下面的路径,使用r就防止了\t的转义

扩展资料:

python在执行代码是,所有的计算都会由内存进行,此时的编码格式是unicode,因为世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。为了统一编码格式,便于计算,就出现了unicode。

三、如何将string类转换为支持UNICODE和ANSI的C字符串啊

是完全可以的,见我给你写的源代码及注释。

#inlcude<string>

using

namespace

std;

(1)string

->

ANSI

C字符串

string

str("rtyu");

char*

pStr

=

(char*)str.c_str();

ANSI的字符串指针,指向str的内存地址,然后直接使用pStr,当然你也可以把这个字符串拷贝出来,如下:

char*

pBuff

=

new

char[str.length()

+

1];

strcpy(pBuff,

pStr);

使用pBuff

delete

pBuff;

释放内存

(2)支持UNICODE的string类,你使用wstring就可以了,相关函数也全换成UNICODE版本就好了,如下:

wstring

str(L"王小二");

wchar_t*

pStr

=

(wchar_t*)str.c_str();

指向str字符串内存

wchar_t*

pBuff

=

new

wchar_t[str.length()

+

1];

wcscpy(pBuff,

pStr);

此时pBuff中的内容正是"王小二"

delete

pBuff;

到此,以上就是小华对于UnicodeString的问题就介绍到这了,希望介绍关于UnicodeString的3点解答对大家有用。

衣在精而不再多,四件经典单品打造极简衣橱,就能让美丽加分吗?_百度...(秒变夏日“元气少女”,学生党也能轻松驾驭,元气少女穿搭有哪些呢?_百...)【打造出极简衣橱,衬衫连衣裙】
友基官网【友基ex12数位板怎么使用?】
  • 世纪婴儿病逝细节(世纪婴儿病逝细节描写)

    世纪婴儿病逝细节(世纪婴儿病逝细节描写)

  • 哈雷有哪些车型(摩托车品牌哈雷的全称)

    哈雷有哪些车型(摩托车品牌哈雷的全称)

  • 居民医保再提高30元(居民医保再提高30元怎么办)

    居民医保再提高30元(居民医保再提高30元怎么办)

  • 侵权责任的概念是什么?(民法典侵权责任有哪些归责原则)

    侵权责任的概念是什么?(民法典侵权责任有哪些归责原则)

  • 没有学历能上什么技校吗【没有学历能上什么技校?】

    没有学历能上什么技校吗【没有学历能上什么技校?】

  • 雷启飞的演艺经历(雷启飞多大了)

    雷启飞的演艺经历(雷启飞多大了)

  • 花粉过敏元凶是树(花粉过敏是什么树)

    花粉过敏元凶是树(花粉过敏是什么树)

  • 什么是acca考试【acca怎么学比较好?】

    什么是acca考试【acca怎么学比较好?】

  • 体重50斤仍在减肥(体重50斤仍在减肥怎么办)

    体重50斤仍在减肥(体重50斤仍在减肥怎么办)

  • 北部湾航空公司怎么样【北部湾航空公司怎么样,北部湾航空公司怎么样服务好】

    北部湾航空公司怎么样【北部湾航空公司怎么样,北部湾航空公司怎么样服务好】

电脑版
© 2020 M.Qzby.com,All Rights Reserved.
XML地图 SiteMap地图