C++String学习

来源:互联网 发布:java阅读软件 编辑:程序博客网 时间:2024/05/21 15:03
#pragma once
#include<Windows.h>
#include<string>
#include<iostream>
#include<tchar.h>
using namespace std;
/*
备注:
1、所有和string::npos的比较一定要用string::size_type来使用,不要直接使用int 或者unsigned int等类型。其实string::npos表示的是-1
2、const char* 可以和string 直接转换:
   1) c_str直接返回一个以\0结尾的字符串
   2) data直接以数组方式返回string的内容,其大小为size()的返回值,结尾并没有\0字符
   3) copy把string的内容拷贝到buf空间中
   4) 只在需要时才使用c_str()或者data()得到字符串,每调用一次,下次再使用就会失效
3、我们可以直接的根据我们的实际需要来使用 string和wstring,而不用直接去使用basic_string,除非我们想要使用的string的类型不是char或wchar而是什么其他的类型。
   1)wstring是宽char,Unicode编码,一般情况下一个字符占两个字节大小
   2)string是窄char,AscII编码,一个字符占一个字节大小
*/

// string学习官网:http://www.cplusplus.com/reference/string/string/append/

class CustomString  {

public:
string str;
public:
CustomString(const string& s);
CustomString();
~CustomString();
// 加
string& append(const string&str);
string& append(const string&str, size_t subpos, size_t subLen);
string& insert(string::size_type pos, const string& str);
string& insert(string::size_type pos, const string& str, string::size_type subpos, string::size_type sublen);
void push_back(TCHAR c);
// 删除
void clear();
string& erase(string::size_type pos, string::size_type len);
string::iterator erase(string::iterator p); 
string::iterator erase(string::iterator first, string::iterator last);
void pop_back();
// 更新
void swap(string& str);
string& replace(string::size_type pos, string::size_type len, const string& str);
string& replace(string::iterator i1, string::iterator i2, const string& str);
void replace(string::size_type pos, string::size_type len, const string& strdst, string::size_type subpos, string::size_type sublen);
// 查找
char& at(size_t pos);
const char& at(size_t pos) const;
string::iterator rbegin();
const string::iterator rbegin() const;
char& back();
const char& back() const;
string::iterator begin();
string::iterator begin() const;
string::iterator end();
string::iterator end() const;
string::iterator rend();
string::iterator rend() const;
string::size_type find(const string& str, string::size_type pos = 0) const;
string::size_type find_first_of(const string& str, string::size_type pos = 0) const;
string::size_type find_last_not_of(const string& str, string::size_type pos = string::npos) const;
string::size_type find_first_not_of(const string& str, string::size_type pos = 0) const;

string::size_type rfind(const string& str, string::size_type pos = string::npos) const;

// 赋值
string& assign(const string& str);

string& assign(const string&str, size_t subpos, size_t sublen);

// 比较
int compare(const string& str) const;
int compare(size_t pos, size_t len, const string& str) const;
int compare(size_t pos, size_t len, const string& str, size_t subpos, size_t sublen) const;
// 子串
string substr(string::size_type pos, string::size_type len) const;
// 基本操作
size_t capacity() const;
bool empty() const;
string::size_type length() const;
string::size_type max_size() const;
void reserve(string::size_type n = 0);
void resize(string::size_type n);
void shrink_to_fit();
string::size_type size() const;
// 操作符
string& operator+= (const string& str);
string& operator= (const string& str);
TCHAR operator[] (string::size_type pos);
TCHAR operator[] (string::size_type pos) const;
};

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝售假只能发布50个宝贝怎么办 在肯德基买的券过期了怎么办 新买的手机实体店不给换怎么办 苹果平板充电时显示不在充电怎么办 苏州驾校考试科目二挂了两次怎么办 支付宝收款码少收钱了怎么办 支付宝发的红包不领取怎么办 微信存在风险不能领红包怎么办 天猫超市电话写错了怎么办 天猫买东西地址写错了怎么办 天猫上买衣服收货电话写错了怎么办 电视遥控器不小心按了高清键怎么办 康佳电视打开右下角是红色的怎么办 天猫超市退款成功后收到货怎么办 天猫还没收到货就确认收货了怎么办 支付宝红包抵扣被关了怎么办 水貂绒大衣白色过色了怎么办 双面羊绒大衣袖子洗短了怎么办 特殊类型订单销量评价删除后怎么办 淘宝上卖家发货发错了地址怎么办 买完保险想换保险代理人怎么办 怀孕内裤两边磨的好疼怎么办 露肩连体裤穿着卡裆怎么办 魅族手机恋与制作人换诺基亚怎么办 蚊子叮咬后擦风油精了红肿怎么办 机动车已转让没过户出了事情怎么办 签好的合同如果甲方违约怎么办? 饭店没签合同辞职不给工资怎么办 两家为了带孩子闹翻了怎么办啊? 抵押后租赁的房屋被法院拍卖怎么办 房子买20年了没有过户怎么办 二手车没过户行驶证丢了怎么办 买的二手车行驶证丢了怎么办 在京东仓库做事把东西损坏了怎么办 微信显示该账号登陆环境异常怎么办 干洗店把衣服洗坏了怎么办 千牛上怎么改淘宝密码忘记了怎么办 公司收了代理商押金到期不退怎么办 淘宝显示签收但是我没收到货怎么办 淘宝东西没收到显示签收了怎么办 开拼多多店铺的密码忘了怎么办