C++ 字符串处理-去除字符串前后的空字符

2024-05-25 21:36

本文主要是介绍C++ 字符串处理-去除字符串前后的空字符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 1. 关键词
  • 2. strutil.h
  • 3. strutil.cpp
  • 4. 测试代码
  • 5. 运行结果
  • 6. 源码地址

1. 关键词

C++ 字符串处理 去除字符串前后的空字符 跨平台

2. strutil.h

#include <string>
namespace cutl
{/*** @brief Remove leading whitespaces from a string.** @param str the string to be stripped.* @return std::string the stripped string.*/std::string lstrip(const std::string &str);/*** @brief Remove trailing whitespaces from a string.** @param str the string to be stripped.* @return std::string the stripped string.*/std::string rstrip(const std::string &str);/*** @brief Remove leading and trailing whitespaces from a string.** @param str the string to be stripped.* @return std::string the stripped string.*/std::string strip(const std::string &str);
} // namespace cutl

3. strutil.cpp

#include <cctype>
#include <algorithm>
#include "strutil.h"namespace cutl
{std::string lstrip(const std::string &str){if (str.empty()){return "";}size_t index = 0;for (size_t i = 0; i < str.length(); i++){if (!std::isspace(str[i])){index = i;break;}}return str.substr(index, str.length() - index);}std::string rstrip(const std::string &str){if (str.empty()){return "";}size_t index = str.length() - 1;for (size_t i = str.length() - 1; i >= 0; i--){if (!std::isspace(str[i])){index = i;break;}}return str.substr(0, index + 1);}std::string strip(const std::string &str){if (str.empty()){return "";}size_t index1 = 0;for (size_t i = 0; i < str.length(); i++){if (!std::isspace(str[i])){index1 = i;break;}}size_t index2 = str.length() - 1;for (size_t i = str.length() - 1; i >= 0; i--){if (!std::isspace(str[i])){index2 = i;break;}}auto len = index2 - index1 + 1;return str.substr(index1, len);}
} // namespace cutl

4. 测试代码

#include "common.hpp"
#include "strutil.h"void TestStrip()
{PrintSubTitle("TestStrip");std::string text = "  \tThis is a test string. \n ";// std::string text = "  \t中国 \n ";std::cout << "text: " << text << std::endl;std::cout << "trim left text: " << cutl::lstrip(text) << std::endl;std::cout << "trim right text: " << cutl::rstrip(text) << std::endl;std::cout << "trim text: " << cutl::strip(text) << std::endl;
}

5. 运行结果

---------------------------------------------TestStrip----------------------------------------------
text:   	This is a test string. trim left text: This is a test string. trim right text:   	This is a test string.
trim text: This is a test string.

6. 源码地址

更多详细代码,请查看本人写的C++ 通用工具库: common_util, 本项目已开源,代码简洁,且有详细的文档和Demo。

这篇关于C++ 字符串处理-去除字符串前后的空字符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002681

相关文章

利用c++判断水仙花数并输出示例代码

《利用c++判断水仙花数并输出示例代码》水仙花数是指一个三位数,其各位数字的立方和恰好等于该数本身,:本文主要介绍利用c++判断水仙花数并输出的相关资料,文中通过代码介绍的非常详细,需要的朋友可以... 以下是使用C++实现的相同逻辑代码:#include <IOStream>#include <vec

基于C++的UDP网络通信系统设计与实现详解

《基于C++的UDP网络通信系统设计与实现详解》在网络编程领域,UDP作为一种无连接的传输层协议,以其高效、低延迟的特性在实时性要求高的应用场景中占据重要地位,下面我们就来看看如何从零开始构建一个完整... 目录前言一、UDP服务器UdpServer.hpp1.1 基本框架设计1.2 初始化函数Init详解

Python字符串处理方法超全攻略

《Python字符串处理方法超全攻略》字符串可以看作多个字符的按照先后顺序组合,相当于就是序列结构,意味着可以对它进行遍历、切片,:本文主要介绍Python字符串处理方法的相关资料,文中通过代码介... 目录一、基础知识:字符串的“不可变”特性与创建方式二、常用操作:80%场景的“万能工具箱”三、格式化方法

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接

浅析python如何去掉字符串中最后一个字符

《浅析python如何去掉字符串中最后一个字符》在Python中,字符串是不可变对象,因此无法直接修改原字符串,但可以通过生成新字符串的方式去掉最后一个字符,本文整理了三种高效方法,希望对大家有所帮助... 目录方法1:切片操作(最推荐)方法2:长度计算索引方法3:拼接剩余字符(不推荐,仅作演示)关键注意事

C++ 右值引用(rvalue references)与移动语义(move semantics)深度解析

《C++右值引用(rvaluereferences)与移动语义(movesemantics)深度解析》文章主要介绍了C++右值引用和移动语义的设计动机、基本概念、实现方式以及在实际编程中的应用,... 目录一、右值引用(rvalue references)与移动语义(move semantics)设计动机1

Java实现字符串大小写转换的常用方法

《Java实现字符串大小写转换的常用方法》在Java中,字符串大小写转换是文本处理的核心操作之一,Java提供了多种灵活的方式来实现大小写转换,适用于不同场景和需求,本文将全面解析大小写转换的各种方法... 目录前言核心转换方法1.String类的基础方法2. 考虑区域设置的转换3. 字符级别的转换高级转换

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景