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

相关文章

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

golang float和科学计数法转字符串的实现方式

《golangfloat和科学计数法转字符串的实现方式》:本文主要介绍golangfloat和科学计数法转字符串的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望... 目录golang float和科学计数法转字符串需要对float转字符串做处理总结golang float

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应