172210704111-陈国佳总结《2017年12月30日》【连续081天】
标题:模板的一点知识和string类;
内容:
A.
类模板和派生:
类模板从类模板派生;
类模板从模板类派生;
类模板从普通类派生;
普通类从模板类派生;
类模板与友元:
函数,类,类的成员函数作为类模板的友元;
函数模板作为类模板的友元;
函数模板作为类的友元;
类模板作为类模板的友元;
类模板中可以定义静态成员;
B.String类:
初始化:
string s1("Hello")/mouth="March"/s2(8,'x');
可将字符赋给string;
string s;
s='n';
对象的成员函数length()长度;
cout<<s.length()<<endl;
支持流读取运算符,getline函数:
cin>>s;
getline(cin,s);
可互相赋值;
s2=s1;
成员函数assign复制:
string s1("catpig"),s3;
s3.assign(s1,1,3);
s3.assign(s1);
//第一个是将s1中下标为1的字符开始复制3个字符给s3;
单个字符复制:
s2[5]=s1[3]='a';
逐个访问:
string s1("Hello");
for(int i=0;i<s1.length();++i)
cout<<s1.at(i)<<endl;
at(i)和[i]作用一样,但前者会多做一步范围检查,如果超出范围,就会异常;
连接:
s1+=s2;
s1.append(s2);
s2.append(s1,3,s1.size())
//下标为3开始,s1.size()个字符,如果字符串不够,就复制到最后一个字符;
比较:
bool b=(s1==/</> s2);
成员函数compare:
int f1=s1.compare(s2);
0/s1==s1; 1/s1>s2; -1/s1<s2;
子串:
s2=s1.substr(4,5);
//从下标4开始5个字符;
swap 交换成员函数;
寻找string中的字符:
find()
s1.find("lo");
从前往后,找第一个"lo",返回lo出现的开始位置(l的下标)找不到,返回string::nops(静态常量)
rfind()
从后向前找,找第一个"lo",返回'l'下标;找不到,返回nops;
cout<<s1.find("ll",1)<<endl;
从下标1查找"ll";
find_first_of():
s1.find_first_of("abcd");
从前向后,"abcd"中任何一个字符第一次出现的地方,找到,返回字母位置,找不到,返回npos;find_last_of():
字符最后一次出现的地方,返回其位置;
find_first_not_of()
s1.find_first_not_of(abcd);
从前往后查找第一个不在"abcd"出现的字符,返回其位置;找不到。。;
find_last_not_of():
从后向前找第一个不在()中出现的地方;
erase:
s1.erase(5);
//去掉下标5及之后的字符;
replace:
s1.replace(2,3,"haha");
将s1中下标2开始的3个字符换成"haha";
insert():
s1.insert(5,s2);
s1.insert(2,s2,5,3);
//将s2插入s1下标5的位置;
//将s2中下标5开始的3个字符插入s1下标2的位置;
s1.c_str()
返回一个const char*类型字符串,以'\0'结尾;
s1.data()
返回一个char*类型的字符串;
s1.copy(p2,5,0);
//将s1下标0开始的字符到长为5时赋值给p2,返回实际复制字符串的长度;
字符串流处理:
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
string input=("InPut text 123 4.7 A");
istringstream inputString(input);
string s1,s2;
int i;
double d;
char c;
inputString>>s1>>s2>>i>>d>>c;
cout<<s1<<endl<<s2<<endl<<i<<endl<<d<<endl<<c<<endl;
long L;
if(inputString>>L)cout<<"long\n";
else cout<<"empty\n";
}
ostringstream outputString;
int a=10;
outputString<<"This "<<a<<" ok"<<endl;
cout<<outputString.str();
明日计划:STL;