1.为什么学习 string 类
1.1 C 语言中的字符串
C 语言中,字符串是以 '\0' 结尾的一些字符的集合。为方便操作,C 标准库提供了一些 str 系列的库函数,但是这些库函数与字符串是分离开的,不太符合 OOP 思想,而且底层空间需要用户自己管理,容易出现越界访问。
2.标准库中的 string 类
2.1 string 类
使用 string 类时,必须包含 #include <string> 头文件与 using namespace std;。
2.2 auto 与范围 for
auto 关键字
- 在早期 C/C++ 中 auto 的含义是:使用 auto 修饰的变量,是具有自动存储器的局部变量,后来这个不重要了。C++11 中,标准委员会变废为宝赋予了 auto 全新的含义即:auto 不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编辑器,auto 声明的变量必须由编译器在编译时期推导而得。
- 用 auto 声明指针类型时,用 auto 和 auto*没有任何区别;但用 auto 引用类型是必须加&。
- 当在同一行声明多个变量时,这些必须是相同的类型,否则编译器会将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其它变量。
- auto 不能作为函数的参数,可以做返回值,但是谨慎使用
- auto 不能直接用来声明数组
#include <iostream>
using namespace std;
int fun1(){
return 1;
}
//不能做参数
void func2(auto a){}
//可以做返回值,但是建议谨慎使用
auto func3(){
return 3;
}
int main(){
int a=1;
auto b=a;
auto c='a';
auto d=();
e;
cout<<(b).()<<endl;
cout<<(c).()<<endl;
cout<<(d).()<<endl;
x=;
y=&x;
*z=&x;
&m=x;
cout<<(x).()<<endl;
cout<<(y).()<<endl;
cout<<(z).()<<endl;
aa=,bb=;
cc=,dd=;
array[]={,,};
;
}


