一篇文章带你了解C++语法基础–字符串

一篇文章带你了解C++语法基础——字符串

1、字符串的定义与声明

字符串是一种字符数组,存储在 char 类型数组中。在 C++ 语言中,字符串可以通过以下两种方式进行定义:

  • 字符数组定义,例如:
char str[] = "Hello World";

该定义方式定义了一个长度为12(第13个字符是 \0)的字符数组,并将字符串 "Hello World" 存储在其中。

  • C++ 中的 string 类型
#include <string>
string str = "Hello World";

该定义方式定义了一个 string 类型的变量,并将字符串 "Hello World" 存储在其中。

2、字符串的操作

2.1 字符串的输出

通过 cout 对象可以方便地输出一个字符串变量。使用 cout 输出 string 类型的字符串变量时,可以直接使用流插入符号(<<),例如:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "Hello World";
    cout << str << endl;
    return 0;
}

输出结果为:

Hello World

注意,输出字符串时不需要使用循环遍历字符数组。

2.2 字符串的输入

可以使用 cin 对象输入一个字符串,使用流提取符号(>>)输入。例如:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str;
    cin >> str;
    cout << str << endl;
    return 0;
}

运行程序后,在控制台输入字符串,回车之后会输出输入的字符串。

需要注意的是,cin 对象默认以空格、制表符、换行符为输入分隔符,因此只有输入的第一个单词(不包括空格、制表符和换行符)被存储在 str 变量中。

2.3 字符串的长度

C++ 中 string 类型提供了一个 length 函数来获取字符串的长度。例如:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "Hello World";
    cout << "The length of str is " << str.length() << endl;
    return 0;
}

输出结果为:

The length of str is 11

strlen 函数也可以获得字符数组的长度。例如:

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    char str[] = "Hello World";
    int len = strlen(str);
    cout << "The length of str is " << len << endl;
    return 0;
}

输出结果同上。

2.4 字符串的拼接

可以使用 + 运算符或 append 函数将两个字符串拼接起来。例如:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str1 = "Hello";
    string str2 = "World";
    string str3 = str1 + " " + str2;
    cout << str3 << endl;
    str1.append(str2);
    cout << str1 << endl;
    return 0;
}

输出结果为:

Hello World
HelloWorld

需要注意的是,在通过 append 函数将两个字符串进行拼接时,会修改原始字符串变量的值。

2.5 字符串的查找

可以使用 find 函数查找字符串中的子串。例如:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "Hello World";
    int pos = str.find("World");
    if (pos != string::npos) {
        cout << "Find the substring at position " << pos << endl;
    } else {
        cout << "The substring is not found." << endl;
    }
    return 0;
}

输出结果为:

Find the substring at position 6

如果需要查找的子串不存在,则 find 函数会返回 string::npos,表示在字符串中没找到需要查找的子串。

2.6 字符串的替换

可以使用 replace 函数替换字符串中的子串。例如:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "Hello World";
    string newstr = str.replace(6, 5, "China");
    cout << newstr << endl;
    return 0;
}

输出结果为:

Hello China

replace 函数的第一个参数为需要替换子串的起始位置,第二个参数为需要替换的子串的长度,第三个参数为替换后的新字符串。

3、示例说明

3.1 例题1

输入一个字符串,求字符串中的单词数。

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str;
    getline(cin, str);
    int count = 0;
    bool flag = false;
    for (int i = 0; i < str.length(); i++) {
        if (str[i] == ' ' || str[i] == '\n' || str[i] == '\t') {
            flag = false;
        } else if (flag == false) {
            flag = true;
            count++;
        }
    }
    cout << "The number of words is " << count << endl;
    return 0;
}

3.2 例题2

输入一个字符串,将其中连续出现大于等于3次的字母分别省略到只显示3次。

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str;
    getline(cin, str);
    for (int i = 0; i < str.length(); i++) {
        int j = i + 1;
        while (j < str.length() && str[j] == str[i]) {
            j++;
        }
        if (j - i >= 3) {
            str = str.replace(i + 3, j - i - 3, "");
        }
        i = j - 1;
    }
    cout << str << endl;
    return 0;
}

注意,在进行字符串的替换操作时,需要注意避免字符串变量的长度发生改变,可能会导致索引操作出错。因此,在进行字符串的替换操作时,应及时更新字符串变量的长度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你了解C++语法基础–字符串 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • Linux环境中使用BIEE 连接SQLServer业务数据源

    当在Linux操作系统下使用BIEE连接SQLServer业务数据源时,需要通过配置ODBC连接、安装Microsoft ODBC SQL Server Driver软件以及配置BIEE数据源来实现。下面是具体步骤: 配置ODBC连接 1.安装unixODBC:在Linux系统中通过命令行执行sudo apt-get install unixodbc安装un…

    other 2023年6月27日
    00
  • 智能手表开发API接口

    关于智能手表开发API接口的完整攻略,下面是简要的步骤及示例说明。 步骤一:确定需要的API接口 在开发智能手表API接口之前,首先需要明确需要哪些接口。这些接口应该与应用程序的功能需求相关。例如,一个智能手表应用程序可能需要以下接口: 获取用户的健康数据:步数、心率等。 控制手表电池管理 接受手机通知,并进行相应的显示等。 步骤二:设计API接口协议 一旦…

    other 2023年6月26日
    00
  • select改变事件

    当然,我可以为您提供有关“select改变事件”的完整攻略,以下是详细说明: 什么是select改变事件? select改变事件是指当用户在HTML中选择下拉列表中的选项时,会触一个事件。个事件可以用JavaScript来捕获和处理,以便在用户选择不同选项执行不同的操作。 select改变事件的使用 以下是使用select改变事件的步骤: 步骤1:创建下拉列…

    other 2023年5月7日
    00
  • ASP.NET Core 配置和使用环境变量的实现

    关于 ASP.NET Core 如何配置和使用环境变量,可以分为以下几个步骤: 步骤一:添加依赖项 首先,需要在项目中添加依赖项 Microsoft.Extensions.Configuration 和 Microsoft.Extensions.Configuration.EnvironmentVariables。可以通过 NuGet 包管理器或项目文件手动…

    other 2023年6月27日
    00
  • C#实现读写ini配置文件的方法详解

    C#实现读写ini配置文件的方法详解 注意: 本篇攻略的实现方法适用于.NET Framework 2.0及以上版本。 什么是ini配置文件? ini配置文件是一种用来保存程序配置信息的文件,它通常以.ini为后缀名,并且采用了键值对的方式来存储数据。在Windows中,ini配置文件被广泛应用于系统启动项、应用程序配置项等方面。 实现读取ini配置文件 要…

    other 2023年6月25日
    00
  • Ubuntu 18.04 LTS中配置IP地址的完整步骤

    Ubuntu 18.04 LTS配置IP地址的完整步骤 在Ubuntu 18.04 LTS中配置IP地址是一个相对简单的过程。下面是详细的步骤: 步骤一:打开终端 首先,打开终端。你可以通过按下Ctrl + Alt + T键来快速打开终端。 步骤二:编辑网络配置文件 在终端中,输入以下命令来编辑网络配置文件: sudo nano /etc/netplan/0…

    other 2023年7月30日
    00
  • Android自定义ViewGroup之CustomGridLayout(一)

    针对Android自定义ViewGroup之CustomGridLayout(一)这篇文章,我给出以下完整攻略: 1. 主要内容 介绍自定义ViewGroup的概念,以及与之相关的布局管理器(LayoutManager) 讲解如何继承ViewGroup并重写一些必要的方法 实现一个类似GridLayout的CustomGridLayout,支持动态添加子Vi…

    other 2023年6月25日
    00
  • VS报错提示两个文件为同一个输出路径怎么办?

    当我们在使用 Visual Studio(简称VS)编译、打包代码时,有时会遇到“VS报错提示两个文件为同一个输出路径”的错误提示。这个错误是由于在源代码项目中,存在两个或多个文件,它们的输出路径相同而导致的。出现这个错误会影响编译、打包代码的进度,因此需要我们解决这个问题。针对这个问题,我们可以按照以下步骤进行解决。 步骤一:检查项目中的文件是否重复 在V…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部