char[]和char*适用场景

char[]创建一个数组,可以用sizeof计算其长度,数组内容可以修改,因此当需要改变字符串内容时建议用char[];

char*为一个指针,用strlen计算内容长度,可以声明变量,事实上,vs2019不允许用char*声明常量,会编译报错。

const char[] 数组内容不可修改,适用于全局字符串常量,使用const char*时指针是可写的。

 

string转char*:

c++11 中string的自带函数有data和c_str可以转为const char*,c++17中的data函数可以直接转为char*。

11中有几种办法也可以将string转为char*:

1.利用vector,有复制字符串。

std::string foo("text");
std::vector<char> fcv(foo.begin(), foo.end());
fcv.emplace_back('\0');//不要忘记终止符 auto p
= fcv.data();

2.利用string对象的连续储存,这样不用复制字符串,比较简单,但内容关联原本字符串,修改同步。

std::string ss("aaaaa!");
char* p = &*ss.begin();// &ss[0]
std::cout << p << std::endl;
auto plen = strlen(p);
p[1] = 'b';

推荐这两种,足够简单,自己手动维护代价偏高。

 

std::string单字符转char直接取下标即可,char转string的话利用string构造函数:

string(1, char);

 

posted @ 2022-02-23 16:58  秦道友  阅读(93)  评论(0编辑  收藏  举报