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

posted @ 2021-01-02 23:24  Lu&1  阅读(166)  评论(0)    收藏  举报
编辑推荐:
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock
· 一则复杂 SQL 改写后有感
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 智能桌面机器人:使用 .NET 为树莓派开发 Wifi 配网功能
阅读排行:
· 接口被刷百万QPS,怎么防?
· 一个开源免费、功能丰富的 WPF 自定义控件资源库
· 提升Avalonia UI质感,跨平台图标库选型实践
· 告别图形界面:Windows系统OpenSSH服务部署
· C# 中委托和事件的深度剖析与应用场景
点击右上角即可分享
微信分享提示