C++ string的一些操作记录
#include
#include
#include
int begin = 0;
int mid = 2;
int len = 3;
int end = 8;
int pos = 0;
string str = "A";
string str1(str);
string str2("A");
string str3("abcd", len); // str3 == "abc"
string str4("abcd", begin, len); // str4 = "abcd"从begin开始,len长
string str5(len, 'a'); // 长度为len个'a'
// 2 常用函数
len = str.length(); // 长度
len = str.size(); // 长度
int capacity = str.capacity(); // 容量
str.resize(len); // str长度大于len截断, 小于\0补齐
str.resize(len, 'a'); // str长度大于len截断, 小于'a'补齐
str.reserve(len); // 设置容量 不填充
bool isEmpty = str.empty();
str.push_back('a');
str.append("ABC");
// 下标添加
str.insert(begin, len, 'a'); // str的begin位置增加len和'a'字符
str.insert(begin, "abc"); // begin位置添加
str.insert(begin, "abc", len); // begin位置添加"abc"的len长字符
str.insert(begin, "abc", begin, len); // begin位置添加 "abc"从begin开始,len长
// 迭代器添加
// iterator insert(const const_iterator _Where, _CRT_GUARDOVERFLOW const size_type _Count, const _Elem _Ch)
str.insert(str.begin(), len, 'a');
// iterator insert(const const_iterator _Where, const _Iter _First, const _Iter _Last)
str.insert(str.begin(), str2.begin(), str2.end());
str.erase(mid); // 下标mid开始,后边全部删除
str.erase(mid, len); // 下标mid开始,删除len个
str.clear();
str.assign("abc"); // 清空str,赋值为"abc"
str.assign("abcd", len); // 清空,保留len长字符
str.assign("abccc", begin, len); // 清空, begin开始,保留len
str.swap(str1); // 交换str1 str
str.replace(begin, len, "abc"); // 下标begin开始,替换len长度
//size_t find(const string & str, size_t pos = 0) const;
//size_t find(const char* s, size_t pos, size_t n) const;
//size_t find(const char* s, size_t pos = 0) const;
//size_t find(char c, size_t pos = 0) const;
// pos查找起始位置 n待查找字符串的前n个字符
pos = str.find('a'); // 成功返回位置,失败返回-1
pos = str.find("abc");
pos = str.find('a', begin); // 从begin位置处查找
pos = str.find("abc", begin, len); // 从begin位置处查找 "abc"的前len字符
// 从尾部查, 不是倒着查
pos = str.rfind('a');
pos = str.rfind("abc");
pos = str.rfind('a', begin); // begin位置,向前查
pos = str.rfind("abc", begin, len);
//size_t find_first_of(const string & str, size_t pos = 0) const;
//size_t find_first_of(const char* s, size_t pos, size_t n) const;
//size_t find_first_of(const char* s, size_t pos = 0) const;
//size_t find_first_of(char c, size_t pos = 0) const;
// pos查找起始位置 n待查找字符串的前n个字符
// 查找是否包含有子串中任何一个字符
str.find_first_of("abc");
str.find_first_of("abc", begin);
str.find_first_of("abc", begin, len);
//size_t find_last_of(const string & str, size_t pos = npos) const noexcept;
//size_t find_last_of(const char* s, size_t pos = npos) const;
//size_t find_last_of(const char* s, size_t pos, size_t n) const;
//size_t find_last_of(char c, size_t pos = npos) const noexcept;
// string::size_type
string::size_type pos = str.find(str2);
// string::npos
if (pos == string::npos) { }
// 删除收尾空格
if (!s.empty()) {
s.erase(0,s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ") + 1);
}
// string substr(size_t pos = 0, size_t len = npos) const;
// pos 所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0。
// len 复制的字符数目
str2 = str.substr(begin);
str2 = str.substr(begin, len);
// algorithm
reverse(str.begin(), str.end()); // 反转
string strTrans = "A";
transform(strTrans.begin(), strTrans.end(), strTrans.begin(), ::toupper);
transform(strTrans.begin(), strTrans.end(), strTrans.begin(), ::tolower);
// compare
// 相等返回0, 否者ASCII判断返回 正负值
//int compare(const basic_string & s) const;
//int compare(const Ch * p) const;
//int compare(size_type pos, size_type n, const basic_string & s) const;
//int compare(size_type pos, size_type n, const basic_string & s, size_type pos2, size_type n2) const;
//int compare(size_type pos, size_type n, const Ch * p, size_type = npos) const;
str.compare("abc");
// 将数字常量转换为字符串
//std::string to_string(int value);
//std::string to_string(long value);
//std::string to_string(long long value);
//std::string to_string(unsigned value);
//std::string to_string(unsigned long value);
//std::string to_string(unsigned long long value);
//std::string to_string(float value);
//std::string to_string(double value);
//std::string to_string(long double value);
str = to_string(1);
// c_str()生成一个const char*指针,指向以空字符终止的数组
// const char* string::c_str() const
const char* strChar = str.c_str();
// const char* string::data() const
// data():与c_str()类似,但是返回的数组不以空字符终止
strChar = str.data();
// size_type copy(_Out_writes_(_Count) _Elem* const _Ptr, size_type _Count, const size_type _Off = 0) const
char charAry[20] = { 0 };
str.copy(charAry, len, begin); // begin开始,拷贝len个 字符
#include
#include
#include
using namespace std;
class Solution {
public:
void Test() {
int begin = 0;
int mid = 2;
int len = 3;
int end = 8;
int pos = 0;
// 1 构造
string str = "A";
string str1(str);
string str2("A");
string str3("abcd", len); // str3 == "abc"
string str4("abcd", begin, len); // str4 = "abcd"从begin开始,len长
string str5(len, 'a'); // 长度为len个'a'
// 2 常用函数
len = str.length(); // 长度
len = str.size(); // 长度
int capacity = str.capacity(); // 容量
str.resize(len); // str长度大于len截断, 小于\0补齐
str.resize(len, 'a'); // str长度大于len截断, 小于'a'补齐
str.reserve(len); // 设置容量 不填充
bool isEmpty = str.empty();
// 增
str.push_back('a');
str.append("ABC");
// 下标添加
str.insert(begin, len, 'a'); // str的begin位置增加len和'a'字符
str.insert(begin, "abc"); // begin位置添加
str.insert(begin, "abc", len); // begin位置添加"abc"的len长字符
str.insert(begin, "abc", begin, len); // begin位置添加 "abc"从begin开始,len长
// 迭代器添加
// iterator insert(const const_iterator _Where, _CRT_GUARDOVERFLOW const size_type _Count, const _Elem _Ch)
str.insert(str.begin(), len, 'a');
// iterator insert(const const_iterator _Where, const _Iter _First, const _Iter _Last)
str.insert(str.begin(), str2.begin(), str2.end());
// 删
str.erase(mid); // 下标mid开始,后边全部删除
str.erase(mid, len); // 下标mid开始,删除len个
str.clear();
str.assign("abc"); // 清空str,赋值为"abc"
str.assign("abcd", len); // 清空,保留len长字符
str.assign("abccc", begin, len); // 清空, begin开始,保留len
// 改
str.swap(str1); // 交换str1 str
str.replace(begin, len, "abc"); // 下标begin开始,替换len长度
// 查
//size_t find(const string & str, size_t pos = 0) const;
//size_t find(const char* s, size_t pos, size_t n) const;
//size_t find(const char* s, size_t pos = 0) const;
//size_t find(char c, size_t pos = 0) const;
// pos查找起始位置 n待查找字符串的前n个字符
pos = str.find('a'); // 成功返回位置,失败返回-1
pos = str.find("abc");
pos = str.find('a', begin); // 从begin位置处查找
pos = str.find("abc", begin, len); // 从begin位置处查找 "abc"的前len字符
// 从尾部查, 不是倒着查
pos = str.rfind('a');
pos = str.rfind("abc");
pos = str.rfind('a', begin); // begin位置,向前查
pos = str.rfind("abc", begin, len);
//size_t find_first_of(const string & str, size_t pos = 0) const;
//size_t find_first_of(const char* s, size_t pos, size_t n) const;
//size_t find_first_of(const char* s, size_t pos = 0) const;
//size_t find_first_of(char c, size_t pos = 0) const;
// pos查找起始位置 n待查找字符串的前n个字符
// 查找是否包含有子串中任何一个字符
str.find_first_of("abc");
str.find_first_of("abc", begin);
str.find_first_of("abc", begin, len);
//size_t find_last_of(const string & str, size_t pos = npos) const noexcept;
//size_t find_last_of(const char* s, size_t pos = npos) const;
//size_t find_last_of(const char* s, size_t pos, size_t n) const;
//size_t find_last_of(char c, size_t pos = npos) const noexcept;
// string::size_type
string::size_type pos = str.find(str2);
// string::npos
if (pos == string::npos) { }
// 子串
// string substr(size_t pos = 0, size_t len = npos) const;
// pos 所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0。
// len 复制的字符数目
str2 = str.substr(begin);
str2 = str.substr(begin, len);
// algorithm
reverse(str.begin(), str.end()); // 反转
// 转换大小写
string strTrans = "A";
transform(strTrans.begin(), strTrans.end(), strTrans.begin(), ::toupper);
transform(strTrans.begin(), strTrans.end(), strTrans.begin(), ::tolower);
// 其他
// c_str()生成一个const char*指针,指向以空字符终止的数组
// const char* string::c_str() const
const char* strChar = str.c_str();
// const char* string::data() const
// data():与c_str()类似,但是返回的数组不以空字符终止
strChar = str.data();
// size_type copy(_Out_writes_(_Count) _Elem* const _Ptr, size_type _Count, const size_type _Off = 0) const
char charAry[20] = { 0 };
str.copy(charAry, len, begin); // begin开始,拷贝len个 字符
// compare
// 相等返回0, 否者ASCII判断返回 正负值
//int compare(const basic_string & s) const;
//int compare(const Ch * p) const;
//int compare(size_type pos, size_type n, const basic_string & s) const;
//int compare(size_type pos, size_type n, const basic_string & s, size_type pos2, size_type n2) const;
//int compare(size_type pos, size_type n, const Ch * p, size_type = npos) const;
str.compare("abc");
// to_string
// 将数字常量转换为字符串
//std::string to_string(int value);
//std::string to_string(long value);
//std::string to_string(long long value);
//std::string to_string(unsigned value);
//std::string to_string(unsigned long value);
//std::string to_string(unsigned long long value);
//std::string to_string(float value);
//std::string to_string(double value);
//std::string to_string(long double value);
str = to_string(1);
}
};