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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!