请问 string类型 、字符串、字符数组、C-string 怎么区分

tanes 2004-01-11 09:58:38
请问 string类型 、字符串、字符数组、C-string 怎么区分
我看了几遍也没有看明白
...全文
242 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
liberte 2004-01-20
  • 打赏
  • 举报
回复
gzing
tanes 2004-01-20
  • 打赏
  • 举报
回复
怎么可能是我自己造的呢?

请参看
《c++ 编程 -数据结构与程序设计方法》 美 D.S.Mslik(马力克) 著 电子工业出版社出版 03年6月第一版

全书共21章 第9章数组和字符串 里面有 C-string

这是我见过的很少的 直接拿98年的 ANSI/ISO 标准的 C++ 来教人的书。
lan99 2004-01-19
  • 打赏
  • 举报
回复
首先是字符数组和字符串的区分:
字符数组是元素为字符的数组,字符串是数组中最后一个字符为('\0')的字符数组。这是二者的根本区别。即字符串有结束符。
比较相近的是string和c-string:
string类型是封装了字符串操作 的C++类,这个比较通用,也比较好用,因为很多操作都已经定义了。至于C-string,顾名思义,就是c风格的字符串,string类中有一个函数c_str()就是把string 转换为c-string的函数。
二者可以通用,不过c-string比较麻烦!
Wolf0403 2004-01-19
  • 打赏
  • 举报
回复
C-string 这个名次是楼主自造的^_^
jianjian008 2004-01-18
  • 打赏
  • 举报
回复
C/C++中没有字符串变量的说法,是用字符数组存放字符串常量的。
string 类型,(起码在JAVA中)是个字符串类型,有直接量和变量的区分,我是这么认为的!
tanes 2004-01-18
  • 打赏
  • 举报
回复
我研究了几天这个问题
是不是可以这样说 :

string类型 可以有空格,并且末尾 没有 '\0'

C-string 末尾有 '\0' ,并且输出的时候,遇到空格就停止了。

xueweizhong 2004-01-18
  • 打赏
  • 举报
回复
》请问 string类型 、字符串、字符数组、C-string 怎么区分
》我看了几遍也没有看明白

1 字符数组是
元素为字符(character)
的数组

2 字符串是
2.1
数组中最后一个字符为(char(), or wchar_t(), ('\0'))
的字符数组

3 string类型是
封装了字符串操作
的C++类

4 C-string
?????

5 至于"字符串”是否就是 <string-literal>,
那就有些疑问了
因为还没有人翻译过C++STD。
还待请教熟悉国内译本的....

webpie0217 2004-01-11
  • 打赏
  • 举报
回复
希望你发现,其基本的结构都是数组,同一类型的无顺序的符号序列。
romeohua2004 2004-01-11
  • 打赏
  • 举报
回复
字符数组:char[]是一个char型的数组
字符串:char*它可以指向动态内存区也可以指向一个字符数组
string:C++标准库中的一个模板类,它的声明如下:
template <class charT,
class traits=char_traits<charT>,
class Allocator = allocator<charT>
>class basic_string;

typedef basic_string<char> string
因此,string其实并不是类,它是一个typedef的模板

CString是MFC中的一个类
knightmsn 2004-01-11
  • 打赏
  • 举报
回复
我借楼主的一角问同样的问题:
字符指针和字符串应该是同样的写法吧,
字符指针变量a,char * a,字符数组a,char * a
byyyyy 2004-01-11
  • 打赏
  • 举报
回复
string在MFC中是个类,里面有很多实现字符串的方法。
字符串就是"XX"这样的东西了。
字符数组就是X[] = “XX”的东西了

不知道理解的对不对。
dddd8888 2004-01-11
  • 打赏
  • 举报
回复
具体有什么不懂再问
dddd8888 2004-01-11
  • 打赏
  • 举报
回复
你看它的变量声明就行了
一般在C++中,用string(标准库)
MFC中用CString
c中用字符数组 或 char*
Wolf0403 2004-01-11
  • 打赏
  • 举报
回复
字符串,一般来说在内存中的表现都是一个连续字符串。C 语言约定 '\0' (Ascii 0) 作为一个字符串的结束。用引号包含的字面值(例如:"Hello")被 C 编译器自动添加一个末尾的 '\0' 处理。一个指针指向一个包含字符串内容的内存,就是一个字符串指针;任何以 char 为类型的数组都是字符数组。

romeohua2004(小蘑菇) 很明白地解释了两个类。
课程目标:学习Java语言中字符串相关的知识、字符编码常识和正则表达式的使用,并完成案例前导课程:《Java工程师必学系列课程》前4部课程内容:本课程是《Java工程师必学系列课程》的第5部分,主要讲解Java语言中字符串相关知识、字符编码常识和正则表达式的使用。本课程涉及的主要内容可以分为四部分:一、StringStringBuffer和StringBuilder类基本常识、基本原理和使用技巧二、字符编码常识三、Java语言正则表达式的详细语法和使用技巧四、实战案例课程说明:在开发Java程序的过程中,最常用的类莫过于字符串相关的类。可以毫不夸张的说,任何一个Java程序,都离不开对字符串保存和处理。很多学员对字符串的理解只是处于比较粗浅的阶段。殊不知,如果对字符串处理的不好,会影响到软件的运行效率。本课程专门讲解字符串相关的知识,将从字符串的存储方式、底层的运行方式等各方面深入讲解其中的原理和技巧。此外,对字符串进行更高级的处理,又要用到正则表达式的相关知识。正则表达式广泛应用于各种与字符串处理相关的场合。它是一套独立的语言系统,经过几十年的完善和发展,现在已经非常的强大,并且形成了国际标准。各种高级编程语言,都实现了自己的表达式引擎。本课程详细的讲解了Java语言中正则表达式的语法和使用技巧。掌握了正则表达式,对编程水平的提高有非常大的帮助!同时,本课程在最后一部分,安排了非常精彩的、完整的实战案例,通过实战的形式切实帮助学员提高解决具体问题的能力!预期效果:认真学习完本课程,学员可以掌握字符串处理及正则表达式相关的系统知识,并能提高实际的编码水平。环境配置要求:学习本课程需安装JDK1.8或更高版本的JDK,以便程序能正确运行,建议使用IntelliJ IDEA 2019.1.2或更高版本的开发工具。    因有合作协议约束,《穆哥学堂》只提供PDF版本的课件!

64,659

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧