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.pswp.cn/web/15154.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15154.shtml
英文地址,請注明出處:http://en.pswp.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;…