C++.primer-5.31~6.01


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 s4=”hello”+”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

因为加上后所有函数都可以从命名空间找到


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值