C++——char* vs std::string vs char[]

  • char*

eg:char* str = "This is GeeksForGeeks";

pros:

  1. 一个指针指向字符串,节省内存;
  2. 不需要提前指定字符串大小。

cons:

  1. 上述例子在C语言中work,但是C++会有warning提示,因此,在C++中,要加const修饰。eg:const char* str =  "This is GeeksForGeeks";
  2. C++中字符串都是常量字符数组,不能够被修改。
  • std::string

std::string str = "This is GeeksForGeeks";

note:  std::string class which is an instantiation of the basic_string class template

pros:

  1. 专门处理string时,更加方便(searching, replacement, and manipulation functions)

但是,有一些cases还是更推荐用char* 而不是std::string

  1. 处理较低级别的访问时,如与操作系统通信
  2. 与旧C代码的兼容性
  3. 节省内存
  • char[]

eg: char str[] = "This is GeeksForGeeks";

pros:

  1. 修改字符串

cons:

  1. 这是静态分配大小的数组,占用堆栈中的空间。
  2. 如果我们想要与其他字符串连接或操作,我们需要采用开辟大的数组,因为字符串的大小是固定的。为此,我们可以使用C ++标准库cstring或string.h。

 

reference:https://www.geeksforgeeks.org/char-vs-stdstring-vs-char-c/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值