C++string字符串的修改与替换⽅法详析
字符串内容的变化包括修改和替换两种。本节将分别讲解字符串内容的修改和字符串内容的替换。
字符串内容的修改
可以通过使⽤多个函数修改字符串的值。例如 assign(),operator=,erase(),交换(swap),插⼊(insert)等。另外,还可通过 append() 函数添加字符。下⾯逐⼀介绍各成员函数的使⽤⽅法。
assign()函数
使⽤ assign() 函数可以直接给字符串赋值。该函数既可以将整个字符串赋值给新串,也可以将字符串的⼦串赋值给新串。其在 basic_string 中的原型为:basic_string& assign (const E*s); //直接使⽤字符串赋值
basic_string& assign (const E*s, size_type n);
basic_string& assign (const basic_string & str, size_type pos, size_type n);
//将str的⼦串赋值给调⽤串
basic_string& assign (const basic_string& str); //使⽤字符串的“引⽤”賦值
basic_string& assign (size_type n, E c) ; //使⽤ n个重复字符賦值
basic_string& assign (const_iterator first, const_iterator last); //使⽤迭代器赋值
以上⼏种⽅法在例 1 中均有所体现。请读者参考下述代码。
【例 1】
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1 ("123456");
string str;
str.assign (str1); //直接赋值
cout << str << endl;
str.assign (str1, 3, 3); //赋值给⼦串
cout << str << endl;
str.assign (str1,2,str1.npos);//赋值给从位置 2 ⾄末尾的⼦串
cout << str << endl;
str.assign (5,'X'); //重复 5 个'X'字符
cout << str << endl;
string::iterator itB;
string::iterator itE;
itB = str1.begin ();
itE = d();
str.assign (itB, (--itE)); //从第 1 个⾄倒数第 2 个元素,赋值给字符串 str
cout << str << endl;
return 0;
}
operator= 函数
operator= 的功能就是赋值。
erase()函数
erase() 函数的原型为:
iterator erase (iterator first, iterator last);
iterator erase (iterator it);
basic_string& erase (size_type p0 = 0, size_type n = npos);
erase() 函数的使⽤⽅法为:
或 ase (3);
swap()函数
swap()函数的原型为:
void swap (basic_string& str);
swap()函数的使⽤⽅法为:
string str2 ("abcdefghijklmn");
str.swap (str2);
insert()函数
insert () 函数的原型为:
basic_string& insert (size_type p0 , const E * s); //插⼈ 1 个字符⾄字符串 s 前⾯
basic_string& insert (size_type p0 , const E * s, size_type n); // 将 s 的前 3 个字符插⼊p0 位置
basic_string& insert (size_type p0, const basic_string& str);
basic_string& insert (size_type p0, const basic_string& str,size_type pos, size_type n); //选取 str 的⼦串
basic_string& insert (size_type p0, size_type n, E c); //在下标 p0 位置插⼊ n 个字符 c
iterator insert (iterator it, E c); //在 it 位置插⼊字符 c
void insert (iterator it, const_iterator first, const_iterator last); //在字符串前插⼊字符
void insert (iterator it, size_type n, E c) ; //在 it 位置重复插⼊ n 个字符 c
insert() 函数的使⽤⽅法为:
string A("ello");
A = "ello";
B = "H";
B.insert (1,"yanchy ",3);
cout<< B <<endl;
A = "ello";
B = "H";
B.insert (1,A,2,2);
cout << B << endl;
A="ello";
B.insert (1 , 5 , 'C');
cout << B << endl;
A = "ello";
string::iterator it = B.begin () +1;
const string:: iterator itF = A.begin();
const string:: iterator itG = A.end();
B.insert(it,itF,itG);
cout << B << endl;
append 函数
字符串函数gets怎么重新定义append() 函数的原型为:
basic_string& append (const E * s); //在原始字符串后⾯追加字符串s
basic_string& append (const E * s, size_type n);//在原始字符串后⾯追加字符串 s 的前 n 个字符
basic_string& append (const basic_string& str, size_type pos,size_type n);//在原始字符串后⾯追加字符串 s 的⼦串 s [ pos,…,pos +n -1] basic_string& append (const basic_string& str);
basic_string& append (size_type n, E c); //追加 n 个重复字符
basic_string& append (const_iterator first, const_iterator last); //使⽤迭代器追加
append() 函数的使⽤⽅法为:
A = "ello";
cout << A << endl;
cout << B << endl;
B.append(A);
cout << B << endl;
A = "ello";
cout << A << endl;
cout << B << endl;
B.append("12345",2);
cout << B << endl;
A = "ello";
cout << A << endl;
cout << B << endl;
B.append("12345",2,3);
cout << B << endl;
A = "ello";
B = "H";
cout << A << endl;
cout << B << endl;
B.append (10, 'a');
cout << B << endl;
A = "ello";
B = 'H';
cout << A << endl ;
cout << B << endl;
B.append(A.begin(), A, end());
cout << B << endl;
下⾯通过⼀个完整的例⼦介绍这些函数的使⽤:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str1 ("123456");
string str2 ("abcdefghijklmn");
string str;
str.assign(str1);
cout << str << endl;
str.assign (str1 , 3, 3);
cout << str << endl;
str.assign (str1, 2, str1.npos);
cout << str << endl;
str.assign (5, 'X');
cout << str << endl;
string::iterator itB;
string::iterator itE;
itB = str1.begin ();
itE = d();
str.assign (itB, (--itE));
cout << str << endl;
str = str1;
cout << str << endl;
cout << str << endl;
cout << ":" << str << ":" << endl;
str.swap(str2);
cout << str << endl;
string A ("ello");
string B ("H");
B.insert (1, A);
cout << B << endl;
A = "ello";
B ='H';
B.insert (1, "yanchy ", 3);
cout << "插⼊: " << B << endl;
cout << "插⼊:" << B << endl;
A = "ello";
B = "H";
B.insert (1,5,'C');
cout << "插⼊:" << B << endl;
A = "ello";
B = "H";
string::iterator it = B.begin () +1;
const string::iterator itF = A.begin ();
const string::iterator itG = A.end ();
B.insert(it,itF,itG);
cout<<"插⼊:"<< B << endl;
A = "ello";
B = "H";
cout << "A = " << A <<", B = " << B << endl ;
B.append (A);
cout << "追加:" << B << endl;
B = "H";
cout << "A = "<< A << ", B= " << B << endl;
B.append("12345", 2);
cout << "追加:" << B << endl;
A = "ello";
B = "H";
cout << "A = " << A << ", B= " << B << endl;
B.append ("12345", 2, 3);
cout << "追加:" << B << endl;
A = "ello";
B = "H";
cout << "A = " << A <<", B = " << B << endl;
B.append (10 , 'a');
cout << "追加:"<< B << endl;
A = "ello";
B = "H";
cout << "A = " << A << ", B = " << B << endl;
B.append(A.begin() , A.end());
cout << "追加:" << B << endl;
<();
return 0;
}
程序运⾏结果:
123456
456
3456
XXXXX
12345
123456
123
::
abcdefghijklmn
Hello
插⼊: Hyan
插⼊:Hlo
插⼊:HCCCCC
插⼊:Hello
A = ello,
B = H
追加:Hello
A = ello, B= H
追加:H12
A = ello, B= H
追加:H345
A = ello,
B = H
追加:Haaaaaaaaaa
A = ello,
B = H
追加:Hello
字符串内容的替换
如果在⼀个字符串中标识出具体位置,便可以通过下标操作修改指定位置字符的值,或者替换某个⼦串。完成此项操作需要使⽤ string 类的成员函数 replace()。replace() 函数的原型如下:
basic_string& replace (size_type p0, size_type n0, const E * s); //使⽤字符串 s 中的 n 个字符,从源串的位置 P0 处开始替换
basic_string& replace (size_type p0, size_type n0, const E *s, size_type n); //使⽤字符串 s 中的 n 个字符,从源串的位置 P0 处开始替换 1 个字符
basic_string& replace (size_type p0, size_type n0, const basic_string& str); //使⽤字符串 s 中的 n 个字符,从源串的位置 P0 处开始替换
basic_string& replace (size_type p0, size_type n0, const basic_string& str, size_type pos, size_type n); //使⽤串 str 的⼦串 str [pos, pos + n-1] 替换源串中的内容,从位置 p0 处开始替换,替换字符 n0 个basic_string& replace (size_type p0, size_type n0, size_type n, E c); //使⽤ n 个字符 'c' 替换源串中位置 p0 处开始的 n0 个字符
basic_string& replace (iterator first0, iterator last0, const E * s);//使⽤迭代器替换,和 1) ⽤法类似
basic_string& replace (iterator first0, iterator last0, const E * s, size_type n);//和 2) 类似
basic_string& replace (iterator first0, iterator last0, const basic_string& str); //和 3) 类似
basic_string& replace (iterator first0, iterator last0, size_type n, E c); //和 5) 类似
basic_string& replace (iterator first0, iterator last0, const_iterator first, const_iterator last); //使⽤迭代器替换
该函数的使⽤⽅法参照下⾯的程序:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string var ("abcdefghijklmn");
const string dest ("1234");
cout << "1: " << var << endl;
var = "abcdefghijklmn";
cout << "2: " << var << endl;
var ="abcdefghijklmn";
cout << "3: " << var << endl;
string::iterator itA, itB;
string::iterator itC, itD;
itA = var.begin();
itB = d();
var = "abcdefghijklmn";
cout << "4: " << var << endl;
itA = var.begin ();
itB = d();
itC = dest2.begin () +1;
itD = d ();
var = "abodefghijklmn";
cout << "5: " << var << endl;
var = "abcdefghijklmn";
cout <<"6: " << var << endl;
return 0;
}
程序执⾏结果为:
1: abc1234ghijklmn
2: abc234efghijklmn
3: abcxxxxxefghijklmn
4: 1234
5: 67891234efghijklmn
6: abc1234efghijklmn
本节讲述了诸多可进⾏字符串内容的修改和替换的函数及其使⽤⽅法,并给出了例题。由于每个函数可能有多个原型,希望读者根据⾃⼰的情况,掌握其中的⼀种或两种,以满⾜⾃⼰使⽤的需要。同时,希望读者能够对照例题的执⾏效果,认真阅读本章节中的源代码,彻底掌握本节内容。
到此这篇关于C++ string字符串的修改与替换⽅法的⽂章就介绍到这了,更多相关C++ string字符串修改与替换内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论