5.31 study-引用&const
1.引用时候应该保证类型是一致的,因为引用的作用便是用别名来修改本体 | ||||||||||
2.常量引用不用保证类型一致,因为此时引用已经无法修改本体了 | ||||||||||
3.const实质上是把这个量变成常量,所以根据常量的规则使用,必须先初始化,作用域为本个文件(extern) | ||||||||||
4.(2)当用常量引用了一个普通变量时,该普通变量仍可自己改变,const因此也改变 | ||||||||||
由于常量引用和常量指针没有规定所指的对象必须是一个常量,所以当指向变量时,这个变量仍可通过其他方式变化 |
6.01 study-初始化&string&auto(c++11)&std
auto可以让编译器自己去发现该用什么类型,
1.定义时候必须要有初始值,不然找不到
auto i=va11+va22;//其中 va11和va22后面再给出也行
2.所有变量的基本类型都该一致
auto i=0,*p=&i; //正确,i为整数,p是整形指针
auto sz=0,pi=3.14//错误,两类型不一样
1.初始化:在所有函数外的变量会有默认初始值为0,函数体内无默认初始值,但类不在函数中,故有初始值 | |||||||||||||||
2.string的初始化 有直接法和间接法 直接法就在变量后加括号再加想要的值,间接法就是= ,若想要10个n 就(10,'n') | |||||||||||||||
3.当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的: 因为 字符串字面值与string是不同类型 比如 string s3=s1+”world”; //合法操作 string s5=("hallo" + ' , ')+s2; //非法操作 string s5=("hallo" + s2)+ ' , '; //合法操作 |
注意:形如s.size()之类,改的是s,而不是括号
int main()
{
string s;
cin>>s;
此时若输入 hallo world!
会从第一个不为空白开始读起,读取到空白为止
即是hallo
}
从键盘读取数量不定的字符串
string c;
while(cin>>c)//反复读取,直到末尾
cout<<c<<endl;
经过输入,发现空格可以输入,但无法显示.
要想显示空格,应该用getline(cin, inputLine) 代替cin>>
while(getline(cin,c))
用for来控制字符串(c++11)
for(declaration:expression)
statement
举个例子
for(auto c:str)
cout<<c<<endl;//输出当前字符,后面紧跟一个换行符
expression是字符串名字,declaration复制定义一个变量,该变量将用于访问序列中的基础元素
也就相当指针一样,每一个用c来控制都做操作
e.g.
想要将s1中全部字符换成a并且输出
for(auto c:s1)
{
c='a';
cout<<c;
}
或者用引用
for(auto &c:s)
{
c='a';
}
//此时修改c的值就等于修改s的值
cout<<s;
std实际上是命名空间 能用.h都换成c 如string.h变成cstring
因为加上后所有函数都可以从命名空间找到