cs106B/L part1/2
1.const(让意图更加明显)
vector<int> vec={1,2,3};
int sum=0;
for(const auto& val:vec){ //遍历向量时,实际上并没有改变其值
sum+=val;
}
//sum=std::accumulate(vec.begin(),vec.end(),0);//0为初始值,累加vec里面的元素
2.string 流
流可以理解为字符的缓冲区
//字符串输出流,在缓冲区内部,已经包含了这些字符,意味着可以向字符串流中写入内容,但无法从中读取
ostringstream oss("Ito-En Green Tea");
//流具有的特殊操作,可以将缓冲区中的内容倾倒出来,并从中创建一个字符串
cout<<oss.str()<<endl;//Ito-En Green Tea
oss<<"16.9 Ounces";
// oss<<16.9<<" Ounces";这样也是可以的,因为流支持插入任何类型,他会将该类型自动转换为流形式
cout<<oss.str()<<endl;//16.9 Ouncesn Tea
//指针默认是从缓冲区开头读取和写入
//字符串输出流,在缓冲区内部,已经包含了这些字符,意味着可以向字符串流中写入内容,但无法从中读取
ostringstream oss("Ito-En Green Tea",ostringstream::ate);//加入常量,at the end,指针可以从末尾开始
//流具有的特殊操作,可以将缓冲区中的内容倾倒出来,并从中创建一个字符串
cout<<oss.str()<<endl;//Ito-En Green Tea
oss<<"16.9 Ounces";
cout<<oss.str()<<endl;//Ito-En Green Tea16.9 Ounces
//指针默认是从缓冲区开头读取和写入