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

浙公网安备 33010602011771号