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 world
    return 0;
}

讲解:

  • 使用+运算符可以将多个字符串拼接成一个新的字符串。
  • 在拼接时,可以在字符串之间添加其他字符,如空格、逗号等。
  • 拼接后的结果可以赋值给一个新的字符串变量,或直接输出。

3.2 字符串的长度

可以使用length()size()成员函数获取字符串的长度。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, world!";
    cout << "字符串长度: " << str.length() << endl;  // 输出: 13
    cout << "字符串长度: " << str.size() << endl;    // 输出: 13
    return 0;
}

讲解:

  • length()size()函数都可以返回字符串的长度,即字符串中字符的个数。
  • 这两个函数的效果是相同的,可以根据个人喜好选择使用。

3.3 访问字符串中的字符

可以使用[]运算符或at()成员函数访问字符串中的单个字符。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello";
    cout << "第一个字符: " << str[0] << endl;     // 输出: H
    cout << "最后一个字符: " << str.at(4) << endl;  // 输出: o
    return 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或false
    cout << "str1 == str2: " << (str1 == str2) << endl;  // 输出: false
    cout << "str1 == str3: " << (str1 == str3) << endl;  // 输出: true
    cout << "str1 != str2: " << (str1 != str2) << endl;  // 输出: true
    cout << "str1 < str2: " << (str1 < str2) << endl;    // 输出: true
    cout << "str1 > str2: " << (str1 > str2) << endl;    // 输出: false

    return 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;  // 输出: true
    cout << "str1 > str3: " << (str1 > str3) << endl;  // 输出: true
    cout << "str2 > str3: " << (str2 > str3) << endl;  // 输出: true

    return 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()函数将整数转换为字符串,并输出转换后的字符串。

  • 27
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天秀信奥编程培训

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值