2020年4月1日
练习进度
3.6
#include <iostream>
#include <string>
using namespace std;
int main() {
string str("Hello World!");
int len = str.size();
for (int i=0;i<len;i++) //int i=0;while(str[i]!='\n'){...;++i;}
{
str[i] = 'X';
}
cout << str;
}
3.10
#include <iostream>
#include <string>
using namespace std;
int main() {
string str("Hello World! Go ahead.");
cout << str<< endl;
for (char c:str)
{
if (ispunct(c)) //判断是否是标点符号
continue;
else
cout << c;
}
cout << endl;
}
知识点记录
头文件不应包含using 声明
string
string的初始化方式
string s1; //默认初始化,空字符串 1
string s2="Hello World"; //直接初始化 2
string s3("Hello World"); //直接初始化 3,等价于2
string s4=s2; //拷贝初始化 4
string s5(s2); //拷贝初始化 5,等价于4
string s6(n,'c') //直接初始化 6,由n个‘c’组成的字符串
虽然string可以直接与字面值相加,但是字面值之间不能直接相加。
cctype头文件中的字符操作函数
使用for语句把string对象中的每个字符每行输出:
string str("some string");
for(auto c:str)
cout<<c<<endl;
vector
vector对象可以高效增长,也就是说创建空vector,在往里面添加元素效率比创建一个已知长度的vector再一个一个改效率更高。
如果通过下标访问不存在的元素(如v长度10,访问v[10]),会造成缓冲区溢出(buffer overflow)。