081day(模板的一点知识和string类)

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;



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值