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

yizhihongxing

一篇文章带你了解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日

相关文章

  • Spring bean的实例化和IOC依赖注入详解

    请看下面的详细讲解: Spring Bean的实例化 Spring Bean 是由 Spring IOC 容器进行管理的对象,它的实例化过程分为两种:基于构造函数的实例化和基于静态工厂方法的实例化。 基于构造函数的实例化 基于构造函数的实例化是 Spring IOC 容器最基本的实例化方式,其基本流程如下: 在 Spring 配置文件中定义 Bean; 根据…

    other 2023年6月27日
    00
  • C++结构体用法实例分析

    C++结构体用法实例分析 本文将详细介绍C++结构体的用法,并提供两个实例说明。 结构体 结构体是C++中一种用户自定义的数据类型,可以包含多个不同类型的数据成员。其定义方式如下: struct <结构体名称> { <数据类型> <数据成员1>; <数据类型> <数据成员2>; … <数据…

    other 2023年6月27日
    00
  • shell判断一个变量是否为空方法总结

    下面是关于“shell判断一个变量是否为空方法总结”的完整攻略: 概述 在shell脚本编程中,判断变量是否为空是一项基础的操作。在实际编程中,有多种方法可以判断一个变量是否为空,本文将总结常见的方法及其使用说明。 方法一:使用if语句 使用if语句判断变量是否为空,需要注意的是if语句中的条件判断符号不能少。 示例1:判断变量是否为空 #!/bin/bas…

    other 2023年6月27日
    00
  • 一篇文章带你入门Java数据类型

    一篇文章带你入门Java数据类型 Java数据类型简介 在Java中,每个变量都有一个明确的数据类型,这决定了变量可以保存什么类型的数据。Java 中的数据类型分为两种: 基本数据类型 引用数据类型 基本数据类型包括: byte, short, int, long float, double char boolean 引用数据类型包括: 类 接口 数组等 基…

    other 2023年6月27日
    00
  • linux文件系统调整大小的方法(linux调整分区大小)

    下面我将为您详细讲解Linux文件系统调整大小的方法: 一、备份重要数据 在进行分区大小调整之前,务必备份重要数据,以防止数据丢失。 二、卸载分区 在进行分区调整前,需先将要调整大小的分区卸载掉,以确保数据不被更改。 umount /dev/sdaX 其中,/dev/sdaX是要卸载的分区路径。 三、调整分区的大小 使用fdisk命令调整分区大小 fdisk…

    other 2023年6月27日
    00
  • sftp命令列表以备查询-相关文章

    SFTP命令列表以备查询 SFTP(Secure File Transfer Protocol)是一种通过SSH(Secure Shell)协议进行加密传输的文件传输协议。相比于FTP,SFTP更加安全可靠。在网站运维和文件传输方面,SFTP被广泛应用。 以下是常用的SFTP命令列表: 连接服务器: sftp username@hostname 显示当前目录…

    其他 2023年3月28日
    00
  • VS2013外部头文件和源文件怎么添加?

    当我们需要在Visual Studio 2013中使用外部的头文件和源文件时,可以按照以下步骤: 添加头文件 在Solution中创建一个新项目。 在新项目下添加一个头文件(文件名的后缀为.h),比如我们创建一个名为”myheader.h”的头文件。 将需要包含的头文件内容复制到myheader.h中,例如: #ifndef MYHEADER_H #defi…

    other 2023年6月27日
    00
  • iPadOS13.6.1固件下载地址 iPadOS13.6.1下载

    iPadOS 13.6.1固件下载攻略 iPadOS 13.6.1是苹果公司最新发布的操作系统版本,它带来了一些修复和改进。如果你想下载并安装这个固件,下面是一个详细的攻略。 步骤一:备份你的iPad 在开始下载和安装新的固件之前,强烈建议你先备份你的iPad。这样可以确保你的数据在升级过程中不会丢失。你可以通过iCloud或iTunes进行备份。 步骤二:…

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