C++字符串的处理详解

C++字符串的处理详解

在C++中,字符串是一种很重要的数据类型。可以使用以下两种方法来处理字符串:

1. 使用C风格的字符串处理方式

C风格的字符串其实是一个字符数组,字符串的结束标志是'\0'。

字符串的定义:

char str[10];  //定义一个长度为10的字符数组作为字符串

字符串的输出:

printf("%s", str);  //使用%s输出字符串

字符串的输入:

scanf("%s", str);  //使用%s输入字符串

需要注意的是,使用%s输入字符串时,如果输入的字符串长度超过了数组的长度,则会发生内存溢出问题。因此,在输入字符串时,可以使用以下方式来避免此问题:

char str[10];
scanf("%9s", str);  //限制输入的字符串长度不超过9

2. 使用C++中的string类

string类是C++标准库中的一个类,可以用来处理字符串。

字符串的定义:

#include <string>
using namespace std;

string str;  //定义一个字符串

字符串的输出:

cout << str;  //使用cout输出字符串

字符串的输入:

getline(cin, str);  //使用getline函数输入字符串

需要注意的是,如果需要输入多个字符串,则可以使用以下方式:

#include <vector>
using namespace std;

vector<string> strs(3);  //定义一个长度为3的字符串数组

for (int i = 0; i < 3; i++) {
    getline(cin, strs[i]);  //使用getline函数输入字符串
}

以上是C++字符串的处理方式,下面将讲解如何去掉字符串中的空格。

去掉字符串中的空格

1. 使用C++中的string类

#include <string>
using namespace std;

void trim(string &str) {
    int i = 0, j = str.size() - 1;

    //从前往后找到第一个不是空格的字符
    while (i <= j && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' || str[i] == '\r')) {
        i++;
    }

    //从后往前找到第一个不是空格的字符
    while (j >= i && (str[j] == ' ' || str[j] == '\t' || str[j] == '\n' || str[j] == '\r')) {
        j--;
    }

    //截取有效部分的字符串
    str = str.substr(i, j - i + 1);
}

2. 使用C风格的字符串处理方式

void trim(char *str) {
    int len = strlen(str), i = 0, j = len - 1;

    //从前往后找到第一个不是空格的字符
    while (i <= j && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' || str[i] == '\r')) {
        i++;
    }

    //从后往前找到第一个不是空格的字符
    while (j >= i && (str[j] == ' ' || str[j] == '\t' || str[j] == '\n' || str[j] == '\r')) {
        j--;
    }

    //截取有效部分的字符串
    int k = 0;
    for (int m = i; m <= j; m++) {
        str[k++] = str[m];
    }
    str[k] = '\0';
}

以上两种方法实现的功能是相同的,在此不再赘述,下面给出一个使用C++中的string类去掉字符串中空格的示例:

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

void trim(string &str) {
    int i = 0, j = str.size() - 1;

    //从前往后找到第一个不是空格的字符
    while (i <= j && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' || str[i] == '\r')) {
        i++;
    }

    //从后往前找到第一个不是空格的字符
    while (j >= i && (str[j] == ' ' || str[j] == '\t' || str[j] == '\n' || str[j] == '\r')) {
        j--;
    }

    //截取有效部分的字符串
    str = str.substr(i, j - i + 1);
}

int main() {
    string str;
    getline(cin, str);

    trim(str);  //去掉字符串中的空格

    cout << str << endl;

    return 0;
}

输入一个有空格的字符串,输出去掉空格后的字符串。

示例输入1:

  hello world  

示例输出1:

hello world

下面给出一个使用C风格的字符串处理方式去掉字符串中空格的示例:

#include <stdio.h>
#include <string.h>

void trim(char *str) {
    int len = strlen(str), i = 0, j = len - 1;

    //从前往后找到第一个不是空格的字符
    while (i <= j && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' || str[i] == '\r')) {
        i++;
    }

    //从后往前找到第一个不是空格的字符
    while (j >= i && (str[j] == ' ' || str[j] == '\t' || str[j] == '\n' || str[j] == '\r')) {
        j--;
    }

    //截取有效部分的字符串
    int k = 0;
    for (int m = i; m <= j; m++) {
        str[k++] = str[m];
    }
    str[k] = '\0';
}

int main() {
    char str[100];
    gets(str);

    trim(str);  //去掉字符串中的空格

    printf("%s\n", str);

    return 0;
}

输入一个有空格的字符串,输出去掉空格后的字符串。

示例输入2:

   hello world   

示例输出2:

hello world

以上就是C++字符串的处理详解,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++字符串的处理详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • SpringMVC拦截器快速掌握上篇

    下面是关于“SpringMVC拦截器快速掌握上篇”的完整攻略,希望能够对您有所帮助。 什么是SpringMVC拦截器 在SpringMVC框架中,拦截器是一个非常重要的组件,它可以让我们在请求到达Controller之前或者返回结果给客户端之前进行一些统一处理,比如日志记录、权限校验等。 SpringMVC拦截器的配置 配置SpringMVC拦截器很简单,只…

    Java 2023年5月16日
    00
  • 为什么继续选择DELPHI(即将逝去的Delphi前景在何方)

    为什么继续选择DELPHI(即将逝去的Delphi前景在何方) 背景 Delphi是一种基于Object Pascal编程语言的集成开发环境,由Borland公司在1995年发布。自发布以来,Delphi为数不少的开发者提供了稳定快捷、功能丰富的编程环境。然而,随着新的技术不断涌现,Delphi市场份额逐渐萎缩,导致一些人对其前景存在疑虑。但是,选择Delp…

    Java 2023年5月19日
    00
  • Spring依赖注入的三种方式实例详解

    让我们来详细讲解一下“Spring依赖注入的三种方式实例详解”。 1. 依赖注入 在 Spring 框架中,依赖注入是一种对象创建方式,通常是在构造函数、setter 方法或工厂方法中注入依赖对象。 依赖注入通过在运行时动态注入所需的依赖对象,从而增加了代码的可读性和可维护性,并且减少了类之间的关联性,使代码更加灵活和可扩展。 2. 三种依赖注入方式 在 S…

    Java 2023年6月16日
    00
  • Java如何将Excel数据导入到数据库

    下面我将为你详细解释如何使用Java将Excel数据导入到数据库。整个过程可以分为以下几个步骤: 导入相关依赖库 要想使用Java将Excel数据导入到数据库,我们需要使用Apache的POI库来读取和解析Excel文件,以及使用数据库的JDBC驱动。因此需要在项目中导入以下两个依赖库: <dependency> <groupId>o…

    Java 2023年5月20日
    00
  • springbean的八种加载方式汇总

    下面是针对”springbean的八种加载方式汇总”的完整攻略。 概述 在Spring框架中,bean的创建和处理是核心功能之一。了解bean的加载方式及其使用场景有助于我们更好的理解Spring框架的本质。 Spring bean的加载方式主要有八种: 基于XML配置文件的方式 基于注解的方式 基于Java Config的方式 基于自动装配的方式 基于Ja…

    Java 2023年5月19日
    00
  • SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解

    一、概述 本文将详细介绍如何在SpringBoot应用程序中使用JmsTemplate集成队列模式和主题模式。本文将提供XML和JavaConfig两种配置方式。我们将从简单的应用程序开始,使用单个生产者和单个队列或主题。然后,我们将更改为多个生产者和多个队列和主题。通过本文,您将了解如何在SpringBoot应用程序中集成消息传递,以便实现单个或分布式系统…

    Java 2023年5月19日
    00
  • JSONObject用法详解

    JSONObject用法详解 什么是JSONObject? JSONObject是Java中一个常用的类库,通常用于处理JSON格式数据。JSONObject本质上是一个字符串到值的映射,是一种键值对的容器。在Java中使用JSONObject可以将JSON格式数据转化为Java对象进行操作。 JSONObject使用方法 创建JSONObject对象 最常…

    Java 2023年5月26日
    00
  • JSP 连接MySQL配置与使用

    下面我来为你详细讲解“JSP 连接 MySQL 配置与使用”的完整攻略。 1.准备工作 在开始连接 MySQL 数据库之前,我们需要进行一些准备工作: 1.1.安装 MySQL 你需要先安装 MySQL 数据库,并且启动 MySQL 服务。 1.2.下载 JDBC 驱动 JDBC 驱动是用于连接 MySQL 数据库的一个重要工具。你需要从 MySQL 官网上…

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