C++ 字符串处理-将字符串转成大写或小写

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

1. 关键词

C++ 字符串处理 将字符串转成大写或小写 跨平台

2. strutil.h

#include <string>
namespace cutl
{/*** @brief Convert a string to upper case.** @param str the string to be converted.* @return std::string the converted string.*/std::string to_upper(const std::string &str);/*** @brief Convert a string to lower case.** @param str the string to be converted.* @return std::string the converted string.*/std::string to_lower(const std::string &str);
} // namespace cutl

3. strutil.cpp

#include <cctype>
#include <algorithm>
#include "strutil.h"namespace cutl
{std::string to_upper(const std::string &str){std::string result = str;// <cctype>里面声明了一个C版本的函数toupper/tolower,<local>里也声明了一个toupper/tolower的函数模板// 所以std命名空间下std::toupper有名称冲突,Linux下会编译失败,这里使用全局作用域的::toupper(即使用C语言的版本)std::transform(result.begin(), result.end(), result.begin(), ::toupper);return result;}std::string to_lower(const std::string &str){std::string result = str;// <cctype>里面声明了一个C版本的函数toupper/tolower,<local>里也声明了一个toupper/tolower的函数模板// 所以std命名空间下std::tolower有名称冲突,Linux下会编译失败,这里使用全局作用域的::tolower(即使用C语言的版本)std::transform(result.begin(), result.end(), result.begin(), ::tolower);return result;}
} // namespace cutl

4. 测试代码

#include "common.hpp"
#include "strutil.h"void TestUpperLower()
{PrintSubTitle("TestUpperLower");std::string str1 = "Hello, world!";std::string str2 = "GOODBYE, WORLD!";std::cout << "[to_upper] str1, before: " << str1 << ", after: " << cutl::to_upper(str1) << std::endl;std::cout << "[to_lower] str2, before: " << str2 << ", after: " << cutl::to_lower(str2) << std::endl;
}

5. 运行结果

-------------------------------------------TestUpperLower-------------------------------------------
[to_upper] str1, before: Hello, world!, after: HELLO, WORLD!
[to_lower] str2, before: GOODBYE, WORLD!, after: goodbye, world!

6. 源码地址

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序自定义头部

1.在对应界面的json文件&#xff0c;将navigationStyle属性设置为“custom” "navigationStyle":"custom" 2. 状态栏的高度可以通过 wx.getSystemInfo() 获取。 胶囊按钮的信息可以通过 wx.getMenuButtonBoundingClientRect() 获取。 导航栏高度状态栏…

截图工具PixPin(比Snipaste更强大)

PixPin官网链接&#xff1a;https://pixpinapp.com/ 最近新出的一款截图工具PixPin&#xff0c;比Snipaste功能多一些。在Snipaste功能基础上&#xff0c;还支持长截图&#xff0c;截动图&#xff0c;文本识别。

C++11-独占指针unique_ptr原理实现

独占指针&#xff08;unique_ptr&#xff09;是C11标准引入的一种智能指针&#xff0c;用于独占管理动态分配对象的生命周期。unique_ptr确保对象在同一时间只有一个所有者&#xff0c;防止对象被多个指针共享。下面是unique_ptr的实现原理及其内存管理机制。 unique_ptr 的基…

618好物推荐,省心省力省钱包!

一年一度的“618”购物狂欢节又来啦&#xff01;大家都心动了吧&#xff0c;购物车也早就堆满了心仪的好物。别急&#xff0c;别急&#xff0c;让我给你们推荐几款真正值得入手的宝贝&#xff0c;让你们省心、省力还省钱包&#xff01;不管是给自己添置点新装备&#xff0c;还是…

Vue实现一个动态添加行的表格?

在Vue中实现一个动态添加行的表格可以通过以下步骤来完成&#xff0c;如下所示。 步骤 1&#xff1a;设置表格的数据模型 在Vue组件中定义表格的数据模型&#xff0c;通常使用一个数组来存储表格的数据。每一行数据可以是一个对象&#xff0c;对象的属性对应表格的列。 data(…

MFC 编程:Windows 桌面应用程序开发框架

目录 一.概述 二.MFC 与 Win32 的关系 三.CObject 类 1.CObject 类的主要功能 2.CObject 类的派生类 3.CObject 类成员函数 4.内存管理 对象的创建 对象的销毁 引用计数 复制对象 5.序列化 序列化的概念 CObject 类的序列化功能 序列化示例 6.运行时类型信息 …

uniapp App去除iOS底部安全区域白边

未设置的情况下&#xff0c;iOS底部安全区域白边 如图&#xff1a; 去除方法&#xff1a; 在 mainfest.json 中加入一下代码&#xff1a; "safearea" : {"bottom" : {"offset" : "none"} }, 去除效果展示&#xff1a;

Git使用笔记

Git使用笔记 介绍Git推送指定的提交 介绍 Git推送指定的提交 在Git中&#xff0c;如果只想推送一个特定的提交&#xff08;commit&#xff09;&#xff0c;而不是整个分支&#xff0c;可以使用以下步骤&#xff1a; 首先&#xff0c;找到你想要推送的提交的哈希值。通过运行g…

开放式耳机2024超值推荐!教你如何选择蓝牙耳机!

开放式耳机的便利性让它在我们的日常生活中变得越来越重要。它让我们摆脱了传统耳机的限制&#xff0c;享受到了更多的自由。不过&#xff0c;市面上的开放式耳机种类繁多&#xff0c;挑选一款既实用又实惠的产品确实需要一些小窍门。作为一位对开放式耳机颇有研究的用户&#…

SOLC install 中的问题

solc.install 总是卡死&#xff0c;他拉取的网站出问题了 直接把所有的包都下载下来 sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update sudo apt-get install solc pip install py-solc-x 文档 https://web3py.readthedocs.io/en/stable/web3.contract.h…

[WUSTCTF2020]funnyre

ida打开 mian 函数 不能反汇编&#xff0c;往下翻有一处报红&#xff0c;一看是花指令&#xff0c;还怪长&#xff0c;报红的都nop后&#xff0c;全选按P重新生成函数 三百多个变量&#xff0c;也是不太可能一个个去解了&#xff0c;刚好前两天简单练了一下 angr &#xff08;…

C++多生产者,多消费者模型

C11实现多生产者&#xff0c;多消费者模型 在C标准库中实现多生产者多消费者模型&#xff0c;可以使用std::thread、std::queue、互斥锁(std::mutex)、条件变量(std::condition_variable)等组件。下面是一个简单的示例&#xff0c;展示如何创建多生产者和多消费者模型&#xf…

3款录屏录制软件,打造专业级视频内容

随着技术的不断发展&#xff0c;人们在日常工作和学习中经常会遇到记录电脑屏幕的需求&#xff0c;例如录制游戏过程、制作教程、保存会议记录等。为了解决这一需求&#xff0c;许多录屏录制软件应运而生。本文将介绍三款常见的录屏录制软件&#xff0c;通过分析它们的特点和使…

一文带你搞懂DiT(Diffusion Transformer)

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接…

ArcGIS中分割与按属性分割的区别

1、分割ArcGIS批量导出各个市的县级行政边界 视频教学&#xff1a; ArcGIS批量导出各个市的县级行政边界002 2、ArcGIS批量导出全国各省的边界 视频教学&#xff1a; ArcGIS导出全国各省的边界003 推荐学习&#xff1a; ArcGIS全系列实战视频教程——9个单一课程组合系列直播回…

[书生·浦语大模型实战营]——第二节:轻松玩转书生·浦语大模型趣味 Demo

1. 部署InternLM2-Chat-1.8B 模型进行智能对话 1.1配置环境 创建开发机 Intern Studio 官网网址&#xff1a;https://studio.intern-ai.org.cn/ 进入官网后&#xff0c;选择创建开发机&#xff0c;填写 开发机名称 后&#xff0c;点击 选择镜像 使用 Cuda11.7-conda 镜像&am…

CSS中的Flex布局

目录 一.什么是Flex布局 二.Flex布局使用 2.1Flex使用语法 2.2基本概念 三.容器的属性 3.1所有属性概述 3.2flex-direction 3.3flex-wrap 3.4flex-flow 3.5justify-content 3.6align-items 3.7align-content 四.项目(子元素)的属性 4.1所有属性概述 4.2order 4…

遗传算法(Genetic Algorithm, GA)哪些步骤该丢给GPU

遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是一种启发式搜索算法&#xff0c;受到生物进化的启发。在遗传算法中&#xff0c;种群中的每个个体代表问题的一个候选解&#xff0c;通过迭代选择、交叉和变异操作&#xff0c;来模拟自然选择和遗传过程&#xff0c;从而…

九、OpenAI之图片生成(Image generation)

学习用DALL.E的API怎样生成和操作图片 1 介绍 图片API提供3个方法来和图片进行交互&#xff1a; 从0开始基于文字提示创建图片(DALL.E 3 and DALL.E2)基于一个新的提示词&#xff0c;通过让模型替换已有图像的某些区域来创建图像的编辑版本;&#xff08;DALL.E2&#xff09;…