C++ string的最常用的用法总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
    }
}

猜你喜欢

转载自blog.csdn.net/kang___xi/article/details/82758489