c++中,字符和字符串的区别是什么

2020-11-24 19:37:54 字数 5670 阅读 5935

1楼:柳生十连兵

字符串 就是把字符串起来 简单的说是一个字符数组。如‘a’是个字符 “abc”就是个字符串

c++中string和char的主要区别在哪?

2楼:匿名用户

'a'是char, "a"是char string,这两者都是普通的字符和字符串,和c中没什么不同

3楼:匿名用户

1、char是字符类型

2、string是字符串类型

虽然一字之差,但其本质是很大的。

1. char属于基础类型(c++),在c#中它属于值类型(value type)。char类型的长度是固定的,c++中它可能是1个字节,或者2个字节(取决于是否为unicode char),而在c#中,它永远是2个字节。

2. string是一个模板类型,也就是一个class(c++)。在c#中它属于引用类型(reference type)。

string的长度是无法明确取得的。也就是无法通过sizeof来取得,因为它不是一个基础类型,它本身并不固定长度,而取决于内部包含的 字符。

4楼:匿名用户

一个是类类型,一个是基本的数据类型,string这个类封装了很多c语言对char的一些系统的api操作。

5楼:c加语言初学者

char a,a就是一个字符。

string a,a就是字符串。

c++ string定义字符串与char*定义有何区别?

6楼:匿名用户

string是指标准模板库中的std::string,这个就是所谓的字符串类,它具有非常强大的字符串处理能力。可以定义不定长度的字符串,且内存的分配与**均由它自己负责,而不是程序员负责;它支持很多种操作,如对字符串的附加,截取,获取字符串长度等等。

还有它可以配合算法进行各种运算。

而char*是指向char型的指针,一般用它指向一个char型的数组,这个字符串数组,更为正式的称呼是c风格字符串。它的能力很若,首先是不能动态改变长度,第二是容易造成越界问题。第三是没有附加字符的操作,以及它的能力远远比不上std::

string。

所以,现代c++程序中一般使用std::string来处理字符串,除非有函数需要c风格字符串,否则一般不使用它。

7楼:匿名用户

在运用的时候,有些区别!对这2种字符串进行处理的时候,函数用的用法也不同.那个char *的字符串主要操作都在头文件中,而前者在 中,函数的具体用法,自已可以查查.

8楼:匿名用户

string是用来处理字符串的类,char* 是定义字符串指针。

c++中的字符串操作和的区别

9楼:匿名用户

cstring是string.h的baic++版本,string.h是c的标准库。cstring显然是c风格

du字符串,

zhi是以

dao\0结尾的字符串,提供了几个相关的字符串操内作容,必然strcpy strcat等。

string则是c++的库,提供了与标准模板库相似的操作。

就使用上来说,string要比cstring好用的多,主要是不必处理\0的问题。所以,建议使用这个库。

c++中字符串为什么有两种形式? c-style 和 string 有什么区别?

10楼:匿名用户

c-style 是一个指针,或者char数组,字符串的末尾有\0字符

string是一个stl中的类,用于处理字符串,string有一个方法可以返回一个c-style指针

string中还包含了很多处理字符串需要的方法,一般不最强最快效率的情况下用string不容易出错

11楼:止语

c-style 是最原始的,字节数组,使用起来麻烦但是灵活,string 是包转的类,使用起来简单也教灵活。从内存空间来看,不管是字符串,还是一个整数数组……,都是内存中的数据。

12楼:匿名用户

c++中没用string类型,而是有char数组后加'\0'来表示数组的,输出%s表示输出数组而已。

c++中字符数组和字符串有什么区别,使用的时候,还有存储什么的。

13楼:

事实上字符串是形如"abcd",在c++里面是const char*或者char const*这样,而字符数组却不是这样,类型是char*。"abcd"这样的字符串文字量保存在字符串文字量里面,而char或char*只算是一个数字(数码),下面是main.cpp文件的例子:

#include

int main()

;std::printf("abcd");

std::printf("%s",v);

return "abcd"==&v[0];

}这一段**,在gcc下生成的汇编**是:

.file "main.cpp"

.def ___main; .scl 2; .type 32; .endef

.section .rdata,"dr"

lc0:

.ascii "abcd\0"

lc1:

.ascii "%s\0"

.section .text.startup,"x"

.globl _main

.def _main; .scl 2; .type 32; .endef

_main:

lfb9:

.cfi_startproc

pushl %ebp

.cfi_def_cfa_offset 8

.cfi_offset 5, -8

movl %esp, %ebp

.cfi_def_cfa_register 5

andl $-16, %esp

subl $32, %esp

call ___main

movb $97, 27(%esp)

movb $98, 28(%esp)

movb $99, 29(%esp)

movb $100, 30(%esp)

movb $0, 31(%esp)

movl $lc0, (%esp)

call _printf

leal 27(%esp), %eax

movl %eax, 4(%esp)

movl $lc1, (%esp)

call _printf

xorl %eax, %eax

leave

.cfi_restore 5

.cfi_def_cfa 4, 4

ret.cfi_endproc

lfe9:

.def _printf; .scl 2; .type 32; .endef

很明显,"abcd"和char v = ;是完全不同的,这里面一个char如'a'实际的码在系统里面在影射到特定的文字量去。

字符串放在字符串文字量储布区里面,在main()结束后才会被销毁。这个是可以确定的。

但是我不是做汇编的,不知道最精确的说法;但从上面的结果来看,很显然

movb $97, 27(%esp)

movb $98, 28(%esp)

movb $99, 29(%esp)

movb $100, 30(%esp)

movb $0, 31(%esp)

就是把数字一个一个在放到对应的地址上去

而"abcd"则处理为.ascii "%s\0"这一分区段上去

14楼:

字符数组 char a[100]; 可以随便你对元素赋值常量字符串 char* a = 'abcde'; 不能随便赋值动态分配字符串

char *a = malloc(100);

strncpy(a, 'abcd', 0);

拷贝了4个字符

15楼:

唯一的区别就是字符串末尾有一个'\0'作为结束标志;字符数组是没有的.

简单例子:

char ch1="hello";//该串有6个字符,5个可见字符,因为是串,所以末尾自动加上'\0';共六个

char ch2=;//这样写就成了数组.是确确实实的5个字符

c++中=是字符常量还是字符串常量,+呢?

16楼:匿名用户

都是字符常量,一个就是字符常量,一串才说字符串常量

c++中的字符串操作的区别

17楼:砍侃看

cstring是string.h的c++版本,string.h是c的标准库。

cstring显然是c风格字符串,是以\0结尾的字符串,提供了几个相关的字符串操作,必然strcpy strcat等。

string则是c++的库,提供了与标准模板库相似的操作。

就使用上来说,string要比cstring好用的多,主要是不必处理\0的问题。所以,建议使用这个库。

c++中的char定义的数组和string的字符串有什么区别啊?

18楼:匿名用户

明确一下:

你说的char是c++的内置类型char么你说的string是标准库中定义的类么

如果是的话,它两的区别有:

char数组仅仅是存储字符串用的,c库中有一系列操作字符串的函数string是类,它包含一个可变长度的char数组,封装了常用的字符串操作函数

它们之间可以转化

19楼:匿名用户

你问的数组问题的话。不知道我的解释你感觉怎么样。

在数据结构的课程里。

char型的数组是这样的:

char[0] = 'a' char[1] = 'b'

而string[0] = "asdasdasd" string[1] = "asdasdasd"

这样的解释应该有助于你的理解

20楼:匿名用户

对于char数组

:#include

int main()

运行结果:

www**q

a=www

b=**q

a大于b

press any key to continue二者的区别在于:在char数组中 输入www回车,输入**q回车 即可完成输入,程序执行

在string对象中 输入www回车,输入**q回车,还要再输入一个回车才能完成输入

回车传送数据到程序中,getline替换回车为'\0' ,写字符串难道不是这样吗?

为什么后者还要多输入一次回车呢??

21楼:匿名用户

一个是 's'

一个是 "s"

就这点区别

22楼:圭帆召胤

都没有说到重点,

char

是值类型!

string

是引用类型!这个可是本质的区别。

string可以被实例化,而char不可以。

编写函数,将字符串(最多字符)中的大写字母变为

1楼 路过打酱油 编写一个函数 将一个字符串 最多80个字符 中的大写字母变为小写字母 小写字母变为大写字母。要求字符串的输入与输出在主函数中完成。 2楼 匿名用户 vb中有现成的字符串大小写转换函数ucase和lcase,不需要刻意自己编! 3楼 匿名用户 include void main 怎么...

(Java)怎么去掉字符串数组中重复的值

1楼 匿名用户 import java util set import java util treeset public class admin str string set toarray new string 0 for int i 0 i str length i 2楼 public stat...

js中,字符串中含有空格的匹配语句怎么写啊,请教大

1楼 匿名用户 value replace s gi 解释 gi 表示匹配全部 即替换全部 , s 表示匹配空白字符 空格等什么的 2楼 匿名用户 js中,如果用字面量方式定义正则,使用 s匹配空格,如果使用对象方式定义正则,字符串中应该转义,即使用 s进行匹配空格 3楼 匿名用户 str s w ...