C++ Primer Plus Note Chapter4 数组、字符串

C++ Primer Plus 学习笔记

第四章 上半

数组

数组的定义格式,形如

typeName arrayName[arraySize];
short moths[12];

从0开始编号,因此上面的语句中moths[0]是第一个元素,moths[11]是最后一个元素。
编译器不会检查下标是否有效,不会像VB那样有“下标越界”的报错,因此,需要格外注意。

数组的初始化

int cards[4] = {3, 6, 8, 10};   // 允许
int hand[4];    // 允许
float hotelTips[5] = {5.0, 2.5};    // 允许,之后初始化前两个数,剩下的数设置为0
long totals[500] = {0}; // 允许,所有元素被设置为0
short thing[] = {1, 5, 3, 8};   // 允许,数组长度将被设置为4
hand[4] = {5, 6, 7, 9}; // 不被允许
hand = cards;   // 不被允许
double earings[4] {1.2e4, 1.6e4, 1.1e4, 1.7e4}; // C++11允许
unsigned int counts[10] = {};   // C++11允许,所有元素被设置为0
long plifs[] = {25, 92, 3.0};   // 不被C++11允许,禁止缩短转换
char slifs[4] {'h', 'i', 1122011, '\0'};    // 不被C++11允许,禁止缩短转换
字符串

C++有两种处理字符串的方式。一种是C-风格字符串,就是在类型为char的数组末尾加上一个元素'\0'
也能用""来表示,如char bird[11] = "Mr. Cheeps";

数组方式的字符串读取一次性读取一行的输入时,要使用getline()函数,用法如下cin.getline(arrayName, arraySize);该函数会一次性读取整行,根据换行符来确定行尾,并将换行符用\0代替。

也可以使用get(),用法如下cin.get(arrayName, arraySize);get()同样根据换行符确定行尾,但会将换行符保留,不会存在数组中,导致第二次输入无效,因此需要在使用一次get()
像这样

// 方法一
cin.get(arrayName, arraySize);
cin.get();

// 方法二
cin.get(arrayName, arraySize).get();

同样,如果需要先输入数字,再输入字符串,也要使用get()

int year;
(cin >> year).get();
char address[80];
cin.getline(address, 80);

如果要复制数组风格的字符串,需要使用strcpy,用法如下strcpy(charr1, charr2);,意思是将charr2的值复制到charr1。
使用strcat()将字符串添加到另一个字符串的末尾,用法如下strcat(charr1, charr2);,意思时将charr2的值添加到charr1的后面。
strlen(charr);用于检查字符串长度。

另一种是string类。使用它必须调用头文件string,同时需要通过using编译指令或者使用std::srting来引用。它的初始化方法和数组风格的字符串一样,但无需声明长度。

// string类 字符串初始化
string str1;
string str2 = "abcd";
string str3 {"abcd"};
string str4 = {"abcd"};

string类的复制、拼接比数组方便的多

str3 = str1 + str2;  // 拼接
str1 += str2;   // 拼接
str2 = str1;    // 复制
str1.size();    // 读取字符串长度

输入字符串的方法和数组基本相同,使用cin。只有整行输入有点区别。

getline(cin, str);  // string类的整行输入
cin >> str2;   // string类的一般输入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弄曲幽篁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值