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

相关文章

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

2390.从字符串中移除星号

给你一个包含若干星号 * 的字符串 s 。 在一步操作中,你可以: 选中 s 中的一个星号。 移除星号左侧最近的那个非星号字符,并移除该星号自身。 返回移除 所有 星号之后的字符串。 注意: 生成的输入保证总是可以执行题面中描述的操作。 可以证明结果字符串是唯一的。 示例 1: 输入:s = “leet**cod*e” 输出:“lecoe” 解释:从左到右执行移除操作: 距离第 1 个

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

剑指offer(C++)--左旋转字符串

题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! class Solution {public:string LeftRotateStri

PAT-1039 到底买不买(20)(字符串的使用)

题目描述 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如,YrR8RrY是小红想做的珠串;那么ppRYYGrrYBR2258可以

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<