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

tanes 2004-01-11 09:58:38
请问 string类型 、字符串、字符数组、C-string 怎么区分
我看了几遍也没有看明白
...全文
294 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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(小蘑菇) 很明白地解释了两个类。

65,184

社区成员

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

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