C/C++中字符串数组特性梳理

目录

 

无法将字符串赋值给字符数组

C++中的string类型有效解决字符串互相赋值问题

string类型的输出


无法将字符串赋值给字符数组

在C语言中,发现无法将字符串赋值给字符数组,比如:

会发现,如果定义一个字符数组,直接用字符串给起初始化(如第24行),就不会报错,这是因为,在声明数组变量的时候就是,为其开辟空间,并为其初始化,这样才是符合c语言语法的。这就引出一个比较方便的字符数组的赋值方法:

char a[] = "dafadffad";

这样写的话,不管字符内容输入多长,也是可以的,因为是在初始化环节进行的,而且,不用指定字符数组的长度,很是方便了就(缺点也显而易见,就是无法直接获得字符数组的长度)。

但如果是先定义好一个字符数组,再用字符串给其赋值(如第27行,就会报错):

对此,正确的方法是,用strcpy()函数来实现字符串之间的赋值操作:

如此,这个问题就可以解决了!

C++中的string类型有效解决字符串互相赋值问题

再补充一点,如果是C++代码,里面的string类型的数据,可以自由的实现互相赋值,如:

输出: 

可以完成交换。

string类型的输出

c++中,如果之间将string的类型按普通的字符输出,是会报错误的:

error: cannot pass objects of non-trivially-copyable type ‘std::string {aka struct std::basic_string}’ through ‘…’|

应该在输出的时候,在使用时,应在string变量后面加入c_str()方可,c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同,这是为了与C兼容,在C中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成C中的字符串样式。

Guess you like

Origin blog.csdn.net/qq_17846375/article/details/108566585
Recommended