本文主要是介绍GESP三级 - 第二章 - 第2节 - string字符串的应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 认识字符串
1.1 什么是字符串
- 字符串是由一系列字符组成的序列,如"Hello, world!","abcd123"等。
- 在C++中,字符串是用string类型表示的。
#include <iostream>
#include <string>
using namespace std;int main() {// 定义并初始化两个字符串string str1 = "Hello, world!";string str2 = "abcd123";// 输出这两个字符串cout << "str1: " << str1 << endl;cout << "str2: " << str2 << endl;return 0;
}
输出结果:
str1: Hello, world!
str2: abcd123
1.2 字符串的表示方法
- C++中,字符串可以用字符数组或string类型表示。
- 字符数组表示法:char str[] = “Hello”;
- string类型表示法:string str = “Hello”;
#include <iostream>
#include <string>
using namespace std;int main() {// 字符数组表示法char str1[] = "Hello";cout << "str1: " << str1 << endl;// string类型表示法string str2 = "Hello";cout << "str2: " << str2 << endl;return 0;
}
输出结果:
str1: Hello
str2: Hello
1.3 字符串变量的定义
- 使用string类型定义字符串变量:
string str; // 定义一个空字符串
string str = "Hello, world!"; // 定义并初始化字符串
- 使用字符数组定义字符串变量:
char str[6] = "Hello"; // 定义并初始化字符数组,注意结尾的'\0'
char str[] = "Hello"; // 编译器自动计算字符数组大小
1.4 练习:输出一个简单的字符串
#include <iostream>
#include <string>
using namespace std;int main() {// 定义并初始化一个string类型的字符串string str = "Hello, C++!";// 输出这个字符串cout << str << endl;// 定义并初始化一个字符数组char str_array[] = "Welcome to the world of programming!";// 输出这个字符数组cout << str_array << endl;return 0;
}
输出结果:
Hello, C++!
Welcome to the world of programming!
2. 字符串的输入与输出
2.1 使用cin输入字符串
在C++中,可以使用cin
来输入字符串。cin
会读取输入直到遇到空格、制表符或换行符。
#include <iostream>
#include <string>
using namespace std;int main() {string name;cout << "请输入你的名字: ";cin >> name;cout << "你的名字是: " << name << endl;return 0;
}
备注:
- 需要包含
<string>
头文件以使用string
类型。 cin
读取输入时会自动忽略开头的空白字符(空格、制表符、换行符),并在遇到下一个空白字符时停止读取。
2.2 使用getline输入包含空格的字符串
如果你想输入包含空格的字符串,可以使用getline
函数。它可以读取整行字符串,直到遇到换行符为止。
#include <iostream>
#include <string>
using namespace std;int main() {string fullName;cout << "请输入你的全名: ";getline(cin, fullName); // 读取整行输入cout << "你的全名是: " << fullName << endl;return 0;
}
备注:
getline
函数的第一个参数是输入流对象(如cin
),第二个参数是存储读取结果的字符串变量。getline
会读取并丢弃换行符,所以下一次读取将从新的一行开始。
2.3 使用cout输出字符串
使用cout
输出字符串非常简单,将字符串放在<<
运算符后面即可。
#include <iostream>
#include <string>
using namespace std;int main() {string greeting = "Hello, world!";cout << greeting << endl;return 0;
}
备注:
cout
会将字符串中的内容原样输出,不会自动添加换行。如果需要换行,可以在字符串后面加上endl
或'\n'
。
2.4 练习:输入并输出你的名字
#include <iostream>
#include <string>
using namespace std;int main() {string firstName, lastName;cout << "请输入你的名: ";cin >> firstName;cout << "请输入你的姓: ";cin >> lastName;string fullName = firstName + " " + lastName;cout << "你的全名是: " << fullName << endl;return 0;
}
备注:
- 可以使用
+
运算符将多个字符串拼接在一起。 - 注意在拼接全名时,在名和姓之间添加了一个空格。
3. 字符串的基本操作
3.1 字符串的拼接
在C++中,可以使用+
运算符将两个字符串拼接在一起。
#include <iostream>
#include <string>
using namespace std;int main() {string str1 = "Hello";string str2 = "world";string result = str1 + " " + str2;cout << result << endl; // 输出: Hello worldreturn 0;
}
讲解:
- 使用
+
运算符可以将多个字符串拼接成一个新的字符串。 - 在拼接时,可以在字符串之间添加其他字符,如空格、逗号等。
- 拼接后的结果可以赋值给一个新的字符串变量,或直接输出。
3.2 字符串的长度
可以使用length()
或size()
成员函数获取字符串的长度。
#include <iostream>
#include <string>
using namespace std;int main() {string str = "Hello, world!";cout << "字符串长度: " << str.length() << endl; // 输出: 13cout << "字符串长度: " << str.size() << endl; // 输出: 13return 0;
}
讲解:
length()
和size()
函数都可以返回字符串的长度,即字符串中字符的个数。- 这两个函数的效果是相同的,可以根据个人喜好选择使用。
3.3 访问字符串中的字符
可以使用[]
运算符或at()
成员函数访问字符串中的单个字符。
#include <iostream>
#include <string>
using namespace std;int main() {string str = "Hello";cout << "第一个字符: " << str[0] << endl; // 输出: Hcout << "最后一个字符: " << str.at(4) << endl; // 输出: oreturn 0;
}
讲解:
- 使用
[]
运算符可以通过索引访问字符串中的字符,索引从0开始。 - 使用
at()
函数也可以通过索引访问字符,但如果索引越界,at()
会抛出out_of_range
异常,而[]
则行为未定义。 - 字符串的索引范围是
[0, length()-1]
。
3.4 练习:输入两个字符串并拼接输出
#include <iostream>
#include <string>
using namespace std;int main() {string str1, str2;cout << "请输入第一个字符串: ";getline(cin, str1);cout << "请输入第二个字符串: ";getline(cin, str2);string result = str1 + " " + str2;cout << "拼接后的字符串: " << result << endl;cout << "拼接后的字符串长度: " << result.length() << endl;return 0;
}
讲解:
- 使用
getline
函数读取用户输入的两个字符串。 - 使用
+
运算符将两个字符串拼接在一起,中间添加一个空格。 - 输出拼接后的字符串以及它的长度。
4. 字符串的比较
4.1 字符串的比较方法
在C++中,可以使用==
运算符判断两个字符串是否相等,使用!=
判断是否不等,使用<
、>
、<=
、>=
比较字符串的大小。
#include <iostream>
#include <string>
using namespace std;int main() {string str1 = "hello";string str2 = "world";string str3 = "hello";cout << boolalpha; // 输出bool值为true或falsecout << "str1 == str2: " << (str1 == str2) << endl; // 输出: falsecout << "str1 == str3: " << (str1 == str3) << endl; // 输出: truecout << "str1 != str2: " << (str1 != str2) << endl; // 输出: truecout << "str1 < str2: " << (str1 < str2) << endl; // 输出: truecout << "str1 > str2: " << (str1 > str2) << endl; // 输出: falsereturn 0;
}
讲解:
- 使用
==
运算符判断两个字符串是否完全相等,区分大小写。 - 使用
!=
运算符判断两个字符串是否不等。 - 使用
<
、>
、<=
、>=
运算符比较字符串的大小,比较规则是字典序。 boolalpha
是一个iostream操纵符,它使得bool值以true
或false
的形式输出,而不是1
或0
。
4.2 比较字符串大小
字符串的大小比较是按照字典序进行的,即逐个比较字符的ASCII码值,直到出现不同的字符或达到较短字符串的末尾。
#include <iostream>
#include <string>
using namespace std;int main() {string str1 = "apple";string str2 = "banana";string str3 = "app";cout << boolalpha;cout << "str1 < str2: " << (str1 < str2) << endl; // 输出: truecout << "str1 > str3: " << (str1 > str3) << endl; // 输出: truecout << "str2 > str3: " << (str2 > str3) << endl; // 输出: truereturn 0;
}
讲解:
- “apple"小于"banana”,因为’a’的ASCII码小于’b’。
- “apple"大于"app”,因为它们前三个字符相同,但"apple"更长。
- “banana"大于"app”,因为’b’的ASCII码大于’a’。
4.3 练习:输入两个字符串,判断是否相等
#include <iostream>
#include <string>
using namespace std;int main() {string str1, str2;cout << "请输入第一个字符串: ";getline(cin, str1);cout << "请输入第二个字符串: ";getline(cin, str2);if (str1 == str2) {cout << "两个字符串相等" << endl;} else {cout << "两个字符串不相等" << endl;}return 0;
}
讲解:
- 使用
getline
函数读取用户输入的两个字符串。 - 使用
==
运算符判断两个字符串是否相等。 - 根据判断结果输出相应的提示信息。
5.字符串的常用函数
5.1 length()
函数和size()
函数
- 用法:
str.length()
或str.size()
- 返回值: 字符串的长度(无符号整数类型
size_t
) - 这两个函数没有参数,直接调用即可获取字符串的长度。
string str = "Hello, world!";
cout << "Length: " << str.length() << endl; // 输出: Length: 13
cout << "Size: " << str.size() << endl; // 输出: Size: 13
讲解:
- 在上述代码中,我们创建了一个字符串
str
,并使用length()
和size()
函数获取其长度。 - 无论是
length()
还是size()
,都返回字符串中字符的个数,即13。
5.2 replace()
函数
- 用法:
str.replace(pos, len, new_str)
- 参数:
pos
: 要替换的子串的起始位置索引len
: 要替换的子串的长度new_str
: 替换的新字符串
- 该函数将字符串中从
pos
开始的len
个字符替换为new_str
。
string str = "Hello, world!";
str.replace(7, 5, "C++");
cout << str << endl; // 输出: Hello, C++!
讲解:
- 在上述代码中,我们使用
replace()
函数将字符串str
中从位置7开始的5个字符(“world”)替换为"C++"。 - 替换后,字符串变为"Hello, C++!"。
5.3 insert()
函数
- 用法:
str.insert(pos, new_str)
- 参数:
pos
: 插入位置的索引new_str
: 要插入的字符串
- 该函数在字符串的
pos
位置插入new_str
。
string str = "Hello, world!";
str.insert(7, "beautiful ");
cout << str << endl; // 输出: Hello, beautiful world!
讲解:
- 在上述代码中,我们使用
insert()
函数在字符串str
的位置7插入字符串"beautiful "。 - 插入后,字符串变为"Hello, beautiful world!"。
5.4 erase()
函数
- 用法:
str.erase(pos, len)
- 参数:
pos
: 要删除的子串的起始位置索引len
: 要删除的子串的长度 (可选参数,默认为npos
,表示删除从pos
到字符串末尾的所有字符)
- 该函数删除字符串中从
pos
开始的len
个字符。
string str = "Hello, world!";
str.erase(0, 7);
cout << str << endl; // 输出: world!
讲解:
- 在上述代码中,我们使用
erase()
函数删除字符串str
中从位置0开始的7个字符("Hello, ")。 - 删除后,字符串变为"world!"。
5.5 stoi()
函数和stol()
函数
- 用法:
stoi(str)
或stol(str)
- 参数:
str
: 要转换的字符串
- 返回值: 转换后的整数值
stoi()
函数将字符串转换为int
类型,stol()
函数将字符串转换为long
类型。- 如果字符串不能完全转换为整数,则函数会抛出
invalid_argument
异常。
string str1 = "42";
string str2 = "3.14";
int num1 = stoi(str1);
long num2 = stol(str2);
cout << "num1: " << num1 << endl; // 输出: num1: 42
cout << "num2: " << num2 << endl; // 输出: num2: 3
讲解:
- 在上述代码中,我们使用
stoi()
函数将字符串"42"转换为int
类型的整数,使用stol()
函数将字符串"3.14"转换为long
类型的整数。 - 字符串"42"可以完全转换为整数42,而字符串"3.14"只能转换整数部分,小数部分会被忽略。
5.6 substr()
函数
- 用法:
str.substr(pos, len)
- 参数:
pos
: 子串的起始位置索引len
: 子串的长度 (可选参数,默认为npos
,表示从pos
到字符串末尾的所有字符)
- 返回值: 提取的子串
- 该函数返回字符串中从
pos
开始的len
个字符组成的子串。
string str = "Hello, world!";
string sub1 = str.substr(7);
string sub2 = str.substr(0, 5);
cout << "sub1: " << sub1 << endl; // 输出: sub1: world!
cout << "sub2: " << sub2 << endl; // 输出: sub2: Hello
讲解:
- 在上述代码中,我们使用
substr()
函数从字符串str
中提取子串。 str.substr(7)
表示从位置7开始提取到字符串末尾的子串,即"world!"。str.substr(0, 5)
表示从位置0开始提取长度为5的子串,即"Hello"。
5.7 find()
函数
- 用法:
str.find(sub_str, pos)
- 参数:
sub_str
: 要查找的子串pos
: 开始查找的位置索引 (可选参数,默认为0,表示从字符串开头开始查找)
- 返回值: 子串第一次出现的位置索引,如果未找到则返回
string::npos
- 该函数在字符串中查找
sub_str
第一次出现的位置,从pos
位置开始查找。
string str = "Hello, world! Hello, C++!";
size_t pos1 = str.find("Hello");
size_t pos2 = str.find("Hello", 10);
cout << "pos1: " << pos1 << endl; // 输出: pos1: 0
cout << "pos2: " << pos2 << endl; // 输出: pos2: 14
讲解:
- 在上述代码中,我们使用
find()
函数在字符串str
中查找子串"Hello"出现的位置。 str.find("Hello")
表示从字符串开头开始查找"Hello",返回其第一次出现的位置索引0。str.find("Hello", 10)
表示从位置10开始查找"Hello",返回其第一次出现的位置索引14。
5.8 to_string()
函数
- 用法:
to_string(val)
- 参数:
val
: 要转换的数值 (整数、浮点数等)
- 返回值: 转换后的字符串
- 该函数将数值类型转换为字符串类型。
int num1 = 42;
double num2 = 3.14;
string str1 = to_string(num1);
string str2 = to_string(num2);
cout << "str1: " << str1 << endl; // 输出: str1: 42
cout << "str2: " << str2 << endl; // 输出: str2: 3.140000
讲解:
- 在上述代码中,我们使用
to_string()
函数将整数42和浮点数3.14转换为字符串类型。 to_string(num1)
将整数42转换为字符串"42"。to_string(num2)
将浮点数3.14转换为字符串"3.140000"。
6.课堂测试
6.1 字符串的长度统计
编写一个程序,读取用户输入的一行字符串,分别使用length()
函数和size()
函数获取字符串的长度,并输出结果。
输入示例:
Hello, world!
输出示例:
Length: 13
Size: 13
6.2 字符串的替换操作
编写一个程序,读取用户输入的一行字符串,将其中的所有空格替换为下划线"_",并输出替换后的字符串。
输入示例:
Hello, world! Hello, C++!
输出示例:
Hello,_world!_Hello,_C++!
6.3 字符串的插入操作
编写一个程序,读取用户输入的两行字符串,将第二行字符串插入到第一行字符串的指定位置,并输出插入后的字符串。插入位置由用户输入。
输入示例:
Hello, world!
C++
7
输出示例:
Hello, C++ world!
6.4 字符串的删除操作
编写一个程序,读取用户输入的一行字符串,删除其中的指定子串,并输出删除后的字符串。要删除的子串由用户输入。
输入示例:
Hello, world! Hello, C++!
Hello
输出示例:
, world! , C++!
6.5 字符串转整数
编写一个程序,读取用户输入的一行字符串,将其转换为整数并输出。如果字符串不能转换为整数,则输出错误信息。
输入示例1:
42
输出示例1:
42
输入示例2:
3.14
输出示例2:
Invalid input: 3.14
6.6 字符串的子串提取
编写一个程序,读取用户输入的一行字符串,提取并输出其中的指定子串。子串的起始位置和长度由用户输入。
输入示例:
Hello, world!
7 5
输出示例:
world
6.7 字符串的查找操作
编写一个程序,读取用户输入的两行字符串,在第一行字符串中查找第二行字符串出现的位置,并输出查找结果。如果找到,则输出子串出现的位置;如果未找到,则输出"Not found"。
输入示例1:
Hello, world! Hello, C++!
world
输出示例1:
Found at index: 7
输入示例2:
Hello, world! Hello, C++!
Java
输出示例2:
Not found
6.8 整数转字符串
编写一个程序,读取用户输入的一个整数,将其转换为字符串并输出。
输入示例:
42
输出示例:
42
7.解析
7.1 字符串的长度统计
编写一个程序,读取用户输入的一行字符串,分别使用length()
函数和size()
函数获取字符串的长度,并输出结果。
输入示例:
Hello, world!
输出示例:
Length: 13
Size: 13
#include <iostream>
#include <string>
using namespace std;int main() {string str;// 使用getline()函数读取用户输入的一行字符串getline(cin, str);// 使用length()函数获取字符串的长度并输出cout << "Length: " << str.length() << endl;// 使用size()函数获取字符串的长度并输出cout << "Size: " << str.size() << endl;return 0;
}
解析:
- 首先,我们使用
getline()
函数读取用户输入的一行字符串,并将其存储在str
变量中。getline()
函数会读取输入流中的一行内容,直到遇到换行符为止,并将换行符丢弃。 - 然后,我们使用
length()
函数获取字符串str
的长度,并将结果输出。length()
函数返回字符串中字符的数量。 - 接着,我们使用
size()
函数获取字符串str
的长度,并将结果输出。size()
函数与length()
函数的功能相同,都是返回字符串中字符的数量。 - 最后,程序结束并返回0。
这个程序演示了如何使用length()
和size()
函数获取字符串的长度。用户输入一行字符串,程序将分别使用这两个函数计算字符串的长度并输出结果。
7.2 字符串的替换操作
编写一个程序,读取用户输入的一行字符串,将其中的所有空格替换为下划线"_",并输出替换后的字符串。
输入示例:
Hello, world! Hello, C++!
输出示例:
Hello,_world!_Hello,_C++!
#include <iostream>
#include <string>
using namespace std;int main() {string str;// 使用getline()函数读取用户输入的一行字符串getline(cin, str);// 使用find()函数查找空格的位置,并使用replace()函数将空格替换为下划线size_t pos = str.find(' ');while (pos != string::npos) {str.replace(pos, 1, "_");pos = str.find(' ', pos + 1);}// 输出替换后的字符串cout << str << endl;return 0;
}
解析:
- 首先,我们使用
getline()
函数读取用户输入的一行字符串,并将其存储在str
变量中。 - 然后,我们使用
find()
函数查找字符串str
中第一个空格的位置,并将位置存储在pos
变量中。 - 接着,我们使用
while
循环不断查找并替换空格,直到找不到更多的空格为止。在循环内部:- 我们使用
replace()
函数将位置pos
处的一个字符(即空格)替换为下划线。 - 然后,我们使用
find()
函数从位置pos + 1
开始查找下一个空格的位置,并更新pos
的值。
- 我们使用
- 最后,我们输出替换后的字符串。
这个程序演示了如何使用find()
和replace()
函数对字符串进行替换操作。用户输入一行字符串,程序将其中的所有空格替换为下划线,并输出替换后的字符串。
7.3 字符串的插入操作
编写一个程序,读取用户输入的两行字符串,将第二行字符串插入到第一行字符串的指定位置,并输出插入后的字符串。插入位置由用户输入。
输入示例:
Hello, world!
C++
7
输出示例:
Hello, C++ world!
#include <iostream>
#include <string>
using namespace std;int main() {string str1, str2;int pos;// 使用getline()函数读取用户输入的第一行字符串getline(cin, str1);// 使用getline()函数读取用户输入的第二行字符串getline(cin, str2);// 读取用户输入的插入位置cin >> pos;// 使用insert()函数将str2插入到str1的指定位置str1.insert(pos, str2);// 输出插入后的字符串cout << str1 << endl;return 0;
}
解析:
- 首先,我们定义两个字符串变量
str1
和str2
,以及一个整型变量pos
用于存储插入位置。 - 然后,我们使用
getline()
函数读取用户输入的第一行字符串,并将其存储在str1
变量中。 - 接着,我们再次使用
getline()
函数读取用户输入的第二行字符串,并将其存储在str2
变量中。 - 我们使用
cin
读取用户输入的插入位置,并将其存储在pos
变量中。 - 然后,我们使用
insert()
函数将字符串str2
插入到str1
的指定位置pos
。 - 最后,我们输出插入后的字符串。
这个程序演示了如何使用insert()
函数对字符串进行插入操作。用户输入两行字符串和一个插入位置,程序将第二行字符串插入到第一行字符串的指定位置,并输出插入后的字符串。
7.4 字符串的删除操作
编写一个程序,读取用户输入的一行字符串,删除其中的指定子串,并输出删除后的字符串。要删除的子串由用户输入。
输入示例:
Hello, world! Hello, C++!
Hello
输出示例:
, world! , C++!
#include <iostream>
#include <string>
using namespace std;int main() {string str, substr;// 使用getline()函数读取用户输入的字符串getline(cin, str);// 使用getline()函数读取用户输入的要删除的子串getline(cin, substr);// 使用find()函数查找子串的位置size_t pos = str.find(substr);// 如果找到子串,则使用erase()函数删除子串if (pos != string::npos) {str.erase(pos, substr.length());}// 输出删除后的字符串cout << str << endl;return 0;
}
解析:
- 首先,我们定义两个字符串变量
str
和substr
,分别用于存储原始字符串和要删除的子串。 - 然后,我们使用
getline()
函数读取用户输入的原始字符串,并将其存储在str
变量中。 - 接着,我们再次使用
getline()
函数读取用户输入的要删除的子串,并将其存储在substr
变量中。 - 我们使用
find()
函数在str
中查找substr
的位置,并将位置存储在pos
变量中。 - 如果找到子串(即
pos
不等于string::npos
),则使用erase()
函数删除子串。erase()
函数的第一个参数是要删除的子串的起始位置,第二个参数是要删除的子串的长度。 - 最后,我们输出删除后的字符串。
这个程序演示了如何使用find()
和erase()
函数对字符串进行删除操作。用户输入一个字符串和要删除的子串,程序在字符串中查找子串,如果找到则删除该子串,并输出删除后的字符串。
7.5 字符串转整数
编写一个程序,读取用户输入的一行字符串,将其转换为整数并输出。如果字符串不能转换为整数,则输出错误信息。
输入示例1:
42
输出示例1:
42
输入示例2:
3.14
输出示例2:
Invalid input: 3.14
#include <iostream>
#include <string>
using namespace std;int main() {string str;// 使用getline()函数读取用户输入的字符串getline(cin, str);try {// 使用stoi()函数将字符串转换为整数int num = stoi(str);// 输出转换后的整数cout << num << endl;} catch (const invalid_argument& e) {// 捕获无效参数异常,并输出错误信息cout << "Invalid input: " << str << endl;}return 0;
}
解析:
- 首先,我们定义一个字符串变量
str
用于存储用户输入的字符串。 - 然后,我们使用
getline()
函数读取用户输入的字符串,并将其存储在str
变量中。 - 接着,我们使用
try
和catch
块来处理可能出现的异常。 - 在
try
块中,我们使用stoi()
函数将字符串str
转换为整数,并将结果存储在num
变量中。如果转换成功,则输出转换后的整数。 - 如果转换失败(即字符串不能转换为整数),
stoi()
函数会抛出invalid_argument
异常。我们在catch
块中捕获该异常,并输出相应的错误信息。
这个程序演示了如何使用stoi()
函数将字符串转换为整数,并使用异常处理机制来处理无效的输入。用户输入一个字符串,程序尝试将其转换为整数。如果转换成功,则输出转换后的整数;如果转换失败,则输出错误信息。
7.6 字符串的子串提取
编写一个程序,读取用户输入的一行字符串,提取并输出其中的指定子串。子串的起始位置和长度由用户输入。
输入示例:
Hello, world!
7 5
输出示例:
world
#include <iostream>
#include <string>
using namespace std;int main() {string str;int pos, len;// 使用getline()函数读取用户输入的字符串getline(cin, str);// 读取用户输入的起始位置和子串长度cin >> pos >> len;// 使用substr()函数提取子串string substr = str.substr(pos, len);// 输出提取的子串cout << substr << endl;return 0;
}
解析:
- 首先,我们定义一个字符串变量
str
用于存储用户输入的字符串,以及两个整型变量pos
和len
分别表示子串的起始位置和长度。 - 然后,我们使用
getline()
函数读取用户输入的字符串,并将其存储在str
变量中。 - 接着,我们使用
cin
读取用户输入的起始位置pos
和子串长度len
。 - 我们使用
substr()
函数从字符串str
中提取子串。substr()
函数的第一个参数是子串的起始位置,第二个参数是子串的长度。 - 最后,我们输出提取的子串。
这个程序演示了如何使用substr()
函数从字符串中提取指定位置和长度的子串。用户输入一个字符串、子串的起始位置和长度,程序根据这些信息从字符串中提取相应的子串并输出。
7.7 字符串的查找操作
编写一个程序,读取用户输入的两行字符串,在第一行字符串中查找第二行字符串出现的位置,并输出查找结果。如果找到,则输出子串出现的位置;如果未找到,则输出"Not found"。
输入示例1:
Hello, world! Hello, C++!
world
输出示例1:
Found at index: 7
输入示例2:
Hello, world! Hello, C++!
Java
输出示例2:
Not found
#include <iostream>
#include <string>
using namespace std;int main() {string str, substr;// 使用getline()函数读取用户输入的字符串getline(cin, str);// 使用getline()函数读取用户输入的要查找的子串getline(cin, substr);// 使用find()函数查找子串的位置size_t pos = str.find(substr);if (pos != string::npos) {// 如果找到子串,则输出子串的位置cout << "Found at index: " << pos << endl;} else {// 如果未找到子串,则输出"Not found"cout << "Not found" << endl;}return 0;
}
解析:
- 首先,我们定义两个字符串变量
str
和substr
,分别用于存储原始字符串和要查找的子串。 - 然后,我们使用
getline()
函数读取用户输入的原始字符串,并将其存储在str
变量中。 - 接着,我们再次使用
getline()
函数读取用户输入的要查找的子串,并将其存储在substr
变量中。 - 我们使用
find()
函数在str
中查找substr
的位置,并将位置存储在pos
变量中。 - 如果找到子串(即
pos
不等于string::npos
),则输出子串出现的位置。 - 如果未找到子串,则输出"Not found"。
这个程序演示了如何使用find()
函数在字符串中查找子串的位置。用户输入一个字符串和要查找的子串,程序在字符串中查找子串的位置,并输出查找结果。如果找到子串,则输出子串出现的位置;如果未找到子串,则输出"Not found"。
7.8 整数转字符串
编写一个程序,读取用户输入的一个整数,将其转换为字符串并输出。
输入示例:
42
输出示例:
42
#include <iostream>
#include <string>
using namespace std;int main() {int num;// 读取用户输入的整数cin >> num;// 使用to_string()函数将整数转换为字符串string str = to_string(num);// 输出转换后的字符串cout << str << endl;return 0;
}
解析:
- 首先,我们定义一个整型变量
num
用于存储用户输入的整数。 - 然后,我们使用
cin
读取用户输入的整数,并将其存储在num
变量中。 - 接着,我们使用
to_string()
函数将整数num
转换为字符串,并将结果存储在str
变量中。 - 最后,我们输出转换后的字符串。
这个程序演示了如何使用to_string()
函数将整数转换为字符串。用户输入一个整数,程序使用to_string()
函数将整数转换为字符串,并输出转换后的字符串。
这篇关于GESP三级 - 第二章 - 第2节 - string字符串的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!