fbpx
维基百科

C风格字符串

C风格字符串特指在C语言字符串的存储方式。 在编程语言中,常常需要表示一段字符,如“今天你吃了么”,“how are you?”,“afjsa234234(*&(*(”等等。同一种字符串的写法在不同的编程语言中表示的字面值都是一样的,即引号中间的内容,但是在存储的处理上往往不一样。

C语言中字符串的处理 编辑

在C语言中,字符串是以字符数组的形式进行存储的,且在数组中以'\0'作为终结符。由于'\0'在ASCII中表示空字符NULL),即在语意上不可能有有效字符与之重复,故用其来表示字符串的结尾至少在ASCII编码下是合理的。

C++中字符串的处理 编辑

C++语言中,除了继承了C语言中的这种字符串表达形式外,还新添了string类用来表达字符串。就表义来说,这两种字符串存储方式是等价的,但在处理的过程中却有显著的区别。在string类中,所有的对字符串的操作都被封装为成员函数,因此只要string内部有统一的约定,可以不在使用'\0'作为结尾标志。但对于C语言中的字符串,所有的操作都是来源于<cstring>中的以str开头的函数,这些函数的特点就是都以'\0'作为所处理的字符串的结尾标志。

由于这些显著的特点,为了区分C++中这两种不同的字符串,使用“C风格字符串”来特指来源于C语言的字符串存储方式。

与编码规范的冲突 编辑

ASCII编码及其扩充规范中,每个字符长度都不超过1Byte,因此,在C风格字符串中用'\0'表示结尾是合法的。但在UTF16编码中,每个字符使用2Byte进行编码,故会出现其中一个字符为0x00的情况,此时如果仍使用C风格字符串,则在使用相关函数进行处理时,会在第一个0x00出现的位置就被认为是字符串已经结束,但其实字符串并不在此处终结。

UTF8是一种很好的解决方案,UTF8中字符的编码非定长,可能是1Byte或者是2Byte,但是这种编码方案中用每个字符的前缀来表示当前字符的长度,因此既有足够的空间来存储较多的字符,又不会出现0x00导致字符串在被以C风格字符串处理时异常结束。

c风格字符串, 此條目没有列出任何参考或来源, 2013年11月1日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 特指在c语言中字符串的存储方式, 在编程语言中, 常常需要表示一段字符, 今天你吃了么, afjsa234234, 等等, 同一种字符串的写法在不同的编程语言中表示的字面值都是一样的, 即引号中间的内容, 但是在存储的处理上往往不一样, c语言中字符串的处理, 编辑在c语言中, 字符串是以字符数组的形式进行存储的, 且在数组中以,. 此條目没有列出任何参考或来源 2013年11月1日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 C风格字符串特指在C语言中字符串的存储方式 在编程语言中 常常需要表示一段字符 如 今天你吃了么 how are you afjsa234234 amp 等等 同一种字符串的写法在不同的编程语言中表示的字面值都是一样的 即引号中间的内容 但是在存储的处理上往往不一样 C语言中字符串的处理 编辑在C语言中 字符串是以字符数组的形式进行存储的 且在数组中以 0 作为终结符 由于 0 在ASCII中表示空字符 NULL 即在语意上不可能有有效字符与之重复 故用其来表示字符串的结尾至少在ASCII编码下是合理的 C 中字符串的处理 编辑在C 语言中 除了继承了C语言中的这种字符串表达形式外 还新添了string类用来表达字符串 就表义来说 这两种字符串存储方式是等价的 但在处理的过程中却有显著的区别 在string类中 所有的对字符串的操作都被封装为成员函数 因此只要string内部有统一的约定 可以不在使用 0 作为结尾标志 但对于C语言中的字符串 所有的操作都是来源于 lt cstring gt 中的以str开头的函数 这些函数的特点就是都以 0 作为所处理的字符串的结尾标志 由于这些显著的特点 为了区分C 中这两种不同的字符串 使用 C风格字符串 来特指来源于C语言的字符串存储方式 与编码规范的冲突 编辑ASCII编码及其扩充规范中 每个字符长度都不超过1Byte 因此 在C风格字符串中用 0 表示结尾是合法的 但在UTF16编码中 每个字符使用2Byte进行编码 故会出现其中一个字符为0x00的情况 此时如果仍使用C风格字符串 则在使用相关函数进行处理时 会在第一个0x00出现的位置就被认为是字符串已经结束 但其实字符串并不在此处终结 UTF8是一种很好的解决方案 UTF8中字符的编码非定长 可能是1Byte或者是2Byte 但是这种编码方案中用每个字符的前缀来表示当前字符的长度 因此既有足够的空间来存储较多的字符 又不会出现0x00导致字符串在被以C风格字符串处理时异常结束 取自 https zh wikipedia org w index php title C风格字符串 amp oldid 67868614, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。