c风格字符串与string类对比
初始化
char[]声明时必须确定大小
char dog[8];
char cat[8] = { 'f','a','t','e','s','s','a','\0' };
char bird[11] = "Mr. Cheeps";
char fish[] = "Bubbles";
char boss[8] = "Bozo"; //后4位均为'\0'
string不必确定大小
string str1;
string str2 = "panther";
赋值、拼接和附加
char[]需要头文件cstring(以前为string.h)
#include <cstring>
char charr1[20];
char charr2[20] = "jaguar";
char charr3[] = " juice";
strcpy_s(charr1, charr2); //把charr2赋值给charr1
strcat_s(charr1, charr3); //把charr3附加到charr1之后,总长度不得超过strlen(str1)
cout << charr1; //jaguar juice
string使用重载运算符
string str1;
string str2 = "panther";
string str3 = " paste";
str1 = str2; //赋值
str1 += str3; //附加
cout << str1; //panther paste
输入
char[]
char charr1[20];
char charr2[20];
char charr3[20];
char charr4[20];
cin >> charr1; //读取不带空格字符串,通过空白(空格、制表符和换行符)确定结尾,空白留在输入队列
cin.get(); //读取输入队列中下一个字符,用于处理空白(空格、制表符和换行符)
cin.getline(charr2, 20); //读取一行字符串,通过换行符确定行尾,读取换行符并用空字符替换
cin.get(charr3, 20); //读取一行字符串,通过换行符确定行尾,换行符留在输入队列
cin.get();
cin.get(charr4, 20).get(); //读取一行,同时丢弃换行符
string
string str1;
string str2;
cin >> str1; //读取不带空格字符串,通过空白(空格、制表符和换行符)确定结尾,空白留在输入队列
cin.get();
getline(cin, str2); //读取一行字符串,通过换行符确定行尾,读取换行符并用空字符替换
获取字符数
//char[]
char charr[20];
int len1=strlen(charr);
//string
string str="my string";
int len2=str.size();
参考资料:c++ primer 6th edition
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock
· 一则复杂 SQL 改写后有感
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 智能桌面机器人:使用 .NET 为树莓派开发 Wifi 配网功能
· 接口被刷百万QPS,怎么防?
· 一个开源免费、功能丰富的 WPF 自定义控件资源库
· 提升Avalonia UI质感,跨平台图标库选型实践
· 告别图形界面:Windows系统OpenSSH服务部署
· C# 中委托和事件的深度剖析与应用场景