- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章C++ string字符串的修改与替换方法详析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
字符串内容的变化包括修改和替换两种。本节将分别讲解字符串内容的修改和字符串内容的替换.
可以通过使用多个函数修改字符串的值。例如 assign(),operator=,erase(),交换(swap),插入(insert)等。另外,还可通过 append() 函数添加字符.
下面逐一介绍各成员函数的使用方法.
使用 assign() 函数可以直接给字符串赋值。该函数既可以将整个字符串赋值给新串,也可以将字符串的子串赋值给新串。其在 basic_string 中的原型为:
1
2
3
4
5
6
7
|
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】 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#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 = str1.end();
str.assign (itB, (--itE));
//从第 1 个至倒数第 2 个元素,赋值给字符串 str
cout << str << endl;
return
0;
}
|
operator= 函数 。
operator= 的功能就是赋值.
erase()函数 。
erase() 函数的原型为:
1
2
3
|
iterator erase (iterator first, iterator last);
iterator erase (iterator it);
basic_string& erase (size_type p0 = 0, size_type n = npos);
|
erase() 函数的使用方法为:
1
2
|
str.erase (str* begin(), str.end());
或 str.erase (3);
|
swap()函数 。
swap()函数的原型为:
1
|
void
swap (basic_string& str);
|
swap()函数的使用方法为:
1
2
|
string str2 (
"abcdefghijklmn"
);
str.swap (str2);
|
insert()函数 。
insert () 函数的原型为:
1
2
3
4
5
6
7
8
|
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() 函数的使用方法为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
string A(
"ello"
);
string B ;
B.insert(1,A);
cout << B << endl;
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 函数 。
append() 函数的原型为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
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;
|
下面通过一个完整的例子介绍这些函数的使用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#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 = str1.end();
str.assign (itB, (--itE));
cout << str << endl;
str = str1;
cout << str << endl;
str.erase(3);
cout << str << endl;
str.erase (str.begin (), str.end());
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;
A =
"ello"
;
B =
"H"
;
B.insert(1,A,2,2);
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;
cin.get();
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().
1
2
3
4
5
6
7
8
9
10
11
|
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);
//使用迭代器替换
|
该函数的使用方法参照下面的程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <iostream>
#include <string>
using
namespace
std;
int
main ()
{
string var (
"abcdefghijklmn"
);
const
string dest (
"1234"
);
string dest2 (
"567891234"
);
var.replace (3,3, dest);
cout <<
"1: "
<< var << endl;
var =
"abcdefghijklmn"
;
var.replace (3,1, dest.c_str(), 1, 3);
cout <<
"2: "
<< var << endl;
var =
"abcdefghijklmn"
;
var.replace (3, 1, 5,
'x'
);
cout <<
"3: "
<< var << endl;
string::iterator itA, itB;
string::iterator itC, itD;
itA = var.begin();
itB = var.end();
var =
"abcdefghijklmn"
;
var.replace (itA, itB, dest);
cout <<
"4: "
<< var << endl;
itA = var.begin ();
itB = var.end();
itC = dest2.begin () +1;
itD = dest2.end ();
var =
"abodefghijklmn"
;
var.replace (itA, itB, itC, itD);
cout <<
"5: "
<< var << endl;
var =
"abcdefghijklmn"
;
var.replace (3, 1, dest.c_str(), 4);
//这种方式会限定字符串替换的最大长度
cout <<
"6: "
<< var << endl;
return
0;
}
|
程序执行结果为:
1: abc1234ghijklmn 2: abc234efghijklmn 3: abcxxxxxefghijklmn 4: 1234 5: 67891234efghijklmn 6: abc1234efghijklmn 。
本节讲述了诸多可进行字符串内容的修改和替换的函数及其使用方法,并给出了例题。由于每个函数可能有多个原型,希望读者根据自己的情况,掌握其中的一种或两种,以满足自己使用的需要。同时,希望读者能够对照例题的执行效果,认真阅读本章节中的源代码,彻底掌握本节内容.
到此这篇关于C++ string字符串的修改与替换方法的文章就介绍到这了,更多相关C++ string字符串修改与替换内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/qq_43488547/article/details/94975605 。
最后此篇关于C++ string字符串的修改与替换方法详析的文章就讲到这里了,如果你想了解更多关于C++ string字符串的修改与替换方法详析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想对一个字符串执行搜索和替换,比如 password。 正如您从问题中了解到的那样,替换后的字符串应变为 sdvvzrug。 但不幸的是,下面的代码输出bbbbcaab: $search = ran
我正在使用 futurize --stage2它应用了许多源代码转换以使代码 python2 和 python3 兼容。其中一个修复是所有分区 a/b 都替换为 old_div(a/b),我想避免这种
我正在使用 RStudio,但我在控制台上的输出被截断了。我找不到如何停止截断(我尝试搜索 ?options 以及在谷歌上搜索的时间比我想承认的要长)。 编辑:我向大家道歉!我最初的长名称为“This
我有一个 fragment 堆栈,我在其中使用替换和相加。添加或替换我的 fragment 的代码(在我的 Activity 中)如下 private fun addFragment(fragment
我在一个数组中插入了一些字符串,但在我这样做之前,我想按照主题所说的去做。只用 %20 替换空格,我这样做: Name.push(linkText.replace(" ", "%20")); 但是我如
我正在尝试编译和测试我在网上看到的代码 Expanding an IP add 。但是,当我尝试编译它时,我收到有关 StringBuilder 替换方法的错误。它说: IPadd.java:52:
我正在尝试使用 dplyr 的最新功能重写我的部分代码,方法是将 data.frame() 替换为 data_frame() 和 cbind() 与 bind_cols(): library(rgeo
我最近偶然发现了 replace()和 "[ x.tst s.tst s.tst [,1] [,2] [,3] [1,] 0 0 0
我一直想知道,如何在给定的参数内进行替换。 如果你有这样的一行: 123,Hello,World,(I am, here), unknown 你想更换 World与 Foobar那么这是一个简单的任务
如何转义字符串中的双引号?例如, input: "Nobody" output: \"Nobody\" 我尝试过这样的操作,但不起作用: String name = "Nobody"; name.r
我正在做类似的事情: SQL sql sQl SqL var ps = document.getElementsByTagName('p'); for(var i = 0; i 但它不会替换文本。
我正在尝试用 \" 替换所有 " 并用 JSON 解析字符串,但浏览器抛出错误 SyntaxError: JSON Parse error: Unrecognized token '\'. 下面是代码
大家好,在这里挣扎...... 是否可以将第一个正斜杠之间的任何内容替换为“”,但保留其余部分? 例如var 将是 string "/anything-here-this-needs-to-be-re
在下面的代码中,JavaScript 替换函数中的 alert(a) 将提醒匹配的字符串,在本例中,将是 {name} 和 {place}。 这按照文档 javascript docs 的描述工作,即
+-----------------------------+ | tables | +-------------------
我正在尝试用\"替换包含 "的字符串,下面是我尝试过的程序 String s="\"/test /string\""; s = s.replaceAll("\"", "\\\"");
var text = "a's ..a's ...\"... "; text = convert(text); function convert( text ) { var n = text
我正在尝试使用 JavaScript 中的替换函数,但有一个问题。 strNewDdlVolCannRegion = strNewDdlVolCannRegion.replace(/_existing
好吧,首先我对我的上一篇文章感到非常抱歉,但我真的需要帮助,我会把我真正想要的东西放在一个更清晰的代码中。我不擅长 javascript,所以希望你能帮助我。
我正在写一张纸条,遇到了障碍。可能有更有效的方法来执行此操作,但我对 Python 还很陌生。我正在尝试创建用户生成的 IP 地址列表。我正在使用 print 来查看生成的值是否正确。当我运行此代码时
我是一名优秀的程序员,十分优秀!