版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kang___xi/article/details/82758489
1.string的构造方法
string s(cp);
string s(cp, n);
string s(s1);
string s(s1, pos2);
string s(s1, pos2, len2);
2.substr()
s.substr(pos, n):返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值为0,n的默认值为
s.size()-pos.即拷贝从pos开始的所有字符。
3.insert()
basic_string& insert(size_type __pos, const basic_string& __s)
功能:向string中pos位置插入__s
用法:
string str1("hello");
string str2("world");
str2.insert(str2.size(), str1); //str2="worldhello"
basic_string& insert(size_type __pos, const basic_string& __s,size_type __beg, size_type __n)
功能:向string中的pos位置插入__s中从__beg位置开始的__n个字符
用法:
str2.insert(0, str1, 2, 3); //向str2中的0位置之前插入str1中从位置2开始的3个字符
basic_string& insert(size_type __pos, const _CharT* __s, size_type __n)
功能:向string中的__pos位置插入__s开始的__n个字符
用法:
str2.insert(0, cp, 1); //向str2中的0号位置之前插入从地址cp开始的1个字符
basic_string& insert(size_type __pos, const _CharT* __s)
功能:向string中的__pos位置插入__s
用法:str2.insert(0, cp);
basic_string& insert(size_type __pos, size_type __n, _CharT __c)
功能:向string中的__pos位置,插入__n个__c字符
用法:str2.insert(0, 10, '*');
void insert(iterator __p, _InputIter __first, _InputIter __last)
功能:向string中从迭代器__p开始的位置插入[__first, __last)之间的位置
用法:str2.insert(str2.begin(), str1.begin(), str1.end());
4.erase()
s.erase(pos, len); 删除从位置pos开始的len个字符。如果len被省略,则删除从pos开始直至s末尾的所有
字符。返回一个指向s的引用
s.erase(beg, end); 删除迭代器范围[beg, end)内的元素
5.append()
s.append(args) 将args追加到s。返回一个指向s的引用
args的形式如下:
str
str, pos, len
cp, len
cp
n, c
b, e
6.replace()
s.replace(range, args) 删除s中范围range内的字符,替换为args指定的字符。range或者是一个下标和
一个长度,或者是一个一对指向s的迭代器。返回一个指向s的引用
s.replace(11, 3, "3th"); //删除s中从位置11开始的3个字符并插入字符串"3th"
7.find()
s.find(args) 查找s中args第一次出现的位置
s.rfind(args) 查找s中args最后一次出现的位置
s.find_first_of(args) 在s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args) 在s中查找args中任意一个字符最后一次出现的位置
s.find_first_not_of(args) 在s中查找第一个不在args中的字符
s.find_last_not_of(args) 在s中查找最后一个不在args中的字符
args必须是一下形式之一:
c, pos 从s中位置pos开始查找字符c。pos默认为0
s2, pos 从s中位置pos开始查找字符串s2.pos默认为0
cp, pos 从s中位置pos开始查找指针cp指向的以空字符结尾的C风格字符串。pos默认为0
cp, pos, n 从s中位置pos开始查找指针cp指向的数组的前n个字符。pos和n无默认值
注意:若找到,则返回第一个匹配位置的下标,否则返回string::npos。
8.常用函数
to_string(val) :一组重载函数,返回数组val的string表示。val可以算是任何算术类型。对每个浮点类
型和int或更大的整型都有相应版本的to_string()。
stoi(s, p, b) :返回s的起始子串(表示整数内容)的数值,返回值类型为int、long、unsigned
long、long long、unsigned long long.
stol(s, p, b) b表示转换所用的基数,默认值为10.p是size_t的指针,用来保存s stoul(s, p, b)
中第一个非数字字符的下标
stoll(s, p, b)
stoull(s, p, b)
stof(s, p)
stod(s, p)
stold(s, p)
排序 sort(str.begn(), str.end());
●编写一个函数,接收三个string参数s、oldValue、newValue。实现将s中所有oldValue替换为newValue
void replace_string(string &src, const string &oldValue, const string &newValue)
{
int index = 0;
while( (index = src.find(oldValue)) != string::npos)
{
src.replace(index, oldValue.size(), newValue);
index += newValue; //防止oldValue和newValue相等的情况
}
}
●编写一个函数,以特定字符分割字符串
char str[] = "I,am a student;hello world";
const char *delimiter = ",; !";
split(str, delimiter);
void split(char *str, const char *delimiter)
{
char *p2 = strtok(str, delimiter);
while (p2 != NULL)
{
cout << p2 << endl;
p2 = strtok(NULL, delimiter);
}
}
●编写一个函数分离文本中的每一个单词
string line, word;
while (getline(cin, line))
{
istringstream record(line);
while (record>>word)
{
cout << word << endl;
}
}