GESP三级 - 第二章 - 第2节 - string字符串的应用

2024-06-14 00:44

本文主要是介绍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值以truefalse的形式输出,而不是10

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;
}

解析:

  • 首先,我们定义两个字符串变量str1str2,以及一个整型变量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;
}

解析:

  • 首先,我们定义两个字符串变量strsubstr,分别用于存储原始字符串和要删除的子串。
  • 然后,我们使用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变量中。
  • 接着,我们使用trycatch块来处理可能出现的异常。
  • 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用于存储用户输入的字符串,以及两个整型变量poslen分别表示子串的起始位置和长度。
  • 然后,我们使用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;
}

解析:

  • 首先,我们定义两个字符串变量strsubstr,分别用于存储原始字符串和要查找的子串。
  • 然后,我们使用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字符串的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1058896

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景