C++里的char和string

本文详细对比了C语言和C++语言中的字符串处理方式,着重介绍了C++语言中字符串类string的特点和用法,包括声明、存储方式、结束标志、函数实现以及与其他语言的差异,提供了深入理解C++字符串类的指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++中的char是个基本类型,跟int一样;而string却是个库自带的类,string这个类包括很多成员函数,比如push_back(), insert(), append()等,声明的变量是个对象,但不需要程序员自动析构。
可参考:http://www.cplusplus.com/reference/string/string/
下面是C中字符串与C++字符串的区别。
1)
在C语言中,将字符串作为字符数组来处理。即C string就是 char arrary[MAX_SIZE];字符数组。
而C++中的string 是 string class, 声明形式 string strObject.变量是个对象。只是他是C++ 标准库提供的string类,
其实现效果跟用户自定义的类一样。

2) 
C string 字符串可以用字符串数组 char Array[MAX_SIZE];与字符串变量 char *p; 两种方式来存储。 以 '\0'为字符串结束标志。 strlen 是把串结束符 '\0'算在内的,而sizeof是在对字符数组和字符变量的操作结果不一样,引起原理不一样。 strcmp, strncmp,连接使用strcat, 不能 str1+str2, strchr(str1, ch); 在str1中查找ch第一次出现的位置,返回指针变量 而C++ string是类,是对象.结束符是npos,或者-1; 不用指定字符数目的大小。 + 取代了strcat length和size取代了strlen append, compare, substr,find, find_firt_of等函数 可以直接=, 而不用strncpy。 insert, replace, at, erase, clear, swap还有iterator函数的实现。 3)
在函数实现部分printf,scanf, fprinf等可以format的一个字符串中使用 "%s"时,只能用c string;如果是C++ string的话,就必须先变成 c string,否则就会报错。如:
a)
string str ("Test string");  
printf("%s\n", str);  
编译错误:warning: cannot pass objects of non-POD type 'struct std::string' through '...'; call will abort at runtime执行错误:Illegal instruction(coredump)
b)
void strprint(const char *s)  
{  
printf("function: %s\n%", s);  
}  
string str ("Test string");  
strprint(str);  
编译错误:error: cannot convert 'std::string' to 'const char*' for argument '1' to 'void strprint(const char*)'因为c string是基本类型:char 或char array;而c++ string却是个类,是个对象。二者的实现截然不同,不同场合的使用需要转换。修改:只需要将a), b)中的str变为 str.c_str()即可。另外,C++ string的c_str()函数能给出c string 和C++ string的部分区别的解释。

4)头文件只有在使用c string的strncpy, strtok等库函数时才include <string.h>而C++中,则在声明 string 对象时include <string>

转载于:https://www.cnblogs.com/opsing/p/3435963.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值