C++String学习

#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;
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值