C++ 字符串类 string

文章目录

  • 前言
  • 一、string 类型概括
  • 二、字符串流
  • 总结

前言

在C++中,字符串是一种常见的数据类型,用于存储和操作文本数据。C++标准库中提供了std::string类,它是一个功能强大的字符串类,提供了丰富的方法和操作符,使我们能够轻松地处理字符串。


一、string 类型概括

std::string 是C++标准库中定义的字符串类,它在< string>头文件中声明。它被设计为可变长度的字符序列,可以存储和操作任何ASCII或Unicode字符。std::string使用动态内存分配来管理字符串的存储,可以动态增长以适应不同长度的字符串。

C++语言中没有原生的字符串类型。C++标准库提供了 string 类型。

  • string 直接提供字符串的连接
  • string 直接支持字符串的大小比较
  • string 直接提供子串查找 和 提取。
  • string 直接支持字符串的插入和替换。

如果 大家想了解更多关于 std::string 类,可参考我之前的文章:C++ 编程std::string类

例如:下面代码将字符串数组进行比较排序,连接。

using namespace std;
void Sort(string* s,int len)
{
    for (int i = 0; i < len; i++)
    {
        for (int j = i; j < len; j++)
        {
            if (s[i] > s[j])								// 字符串 可 直接 比较大小
             swap(s[i], s[j]);
        }
    }
}

string Add(string* s, int len)						
{
    string ret;

    for (int i = 0; i < len; i++)
        ret += s[i] + " , ";					// 字符串 可 直接 相加

    return ret;
}

int main()
{
    string sa[5] = { "Hello World", "Apple", "Java", "C++","Python"};
	
	Sort(sa, 5);
	for (int k = 0; k < 5; k++)
	cout << sa[k] << endl;;
	
	cout << Add(sa,5)<< endl;
	return 0;
}

在这里插入图片描述

二、字符串流

标准库 提供了相关的类对字符串和数字进行转化。
字符产流类: sstream 用于 string 的转换。
在这里插入图片描述
使用方法:

  1. string -> 数字
    istringstream ss("123.45");
    double num;
    ss >> num;
  1. 数字 -> string
   ostringstream oss;
   oss << 543.21;
   string s = oss.str();

示例代码:

使用 函数模板 可以更方便的将各种类型数字转化为字符串,将字符串转化为各种 类型的数字。
如果对函数模板不太了解的可以参考我之前的文章:C++ 泛型编程:函数模板

using namespace std;

template <typename T>									// 使用函数模板
T To_num(const string& s,T& num)						// 字符串 转换为 数字
{
    istringstream ss(s);

    if(ss >> num)
        return num;
}

template<typename T>										// 使用函数模板
string To_string(T& num)								// 数字 转换为 字符串
{
    ostringstream os;
    os << num;
    return os.str();
}

int main()
{
    string s1 = "12.34";

    int num1 = 10;
    float num2 = 20.22;

    cout << To_string(num1) << endl;					// 打印出 字符串
    cout << To_string( num2) << endl;

    cout << To_num(s1,num1) << endl;
    cout << To_num(s1, num2) << endl;					// 打印数字

    return 0;
}

在这里插入图片描述


总结

std::string是C++中最常用的字符串类之一,具有丰富的功能和用法。通过使用std::string,我们能够方便地创建、访问、修改和操作字符串数据。在编写C++程序时,了解和熟练掌握std::string的方法和操作是非常重要的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

香港大学余涛组推出开源XLANG Agent!支持三种Agent模式

作者 |小戏、ZenMoore 一个新的未来又逐渐开始从理论走向现实走到我们身边了。 语言的意义在于使用&#xff0c;而从 ChatGPT 以来这些大规模语言模型的意义&#xff0c;也必然绝不止于 Chat&#xff0c;在四个月前&#xff0c;我们介绍了清华大学关于工具学习的综述《清华发布…

2021年06月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数的输入和输出 输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。 时间限制:1000 内存限制:65536 输入 一行两个数,分别为整数N(不超过整型范围),双精度浮点数F,以一个空格分开。 输出 一行两个数,分别为保留2位小数输出的F,以及整数N,以…

【数学建模】--主成分分析

本讲将介绍主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;&#xff0c;主成分分析是一种降维算法&#xff0c;它能将多个指标转换为少数几个主成分&#xff0c;这些主成分是原始变量的线性组合&#xff0c;且彼此之间互不相关&#xff0c;其能…

【Linux的开胃小菜】常用的RPM软件包与YUM仓库包管理器使用

一、系统初始化进程 systemd与System V init的区别以及作用&#xff1a; System V init运行级别systemd目标名称systemd目标作用0poweroff.target关机1rescue.target单用户模式2multi-user.target多用户的文本界面3multi-user.target多用户的文本界面4multi-user.target多用户…

FiboSearch Pro – Ajax Search for WooCommerce 商城AJAX实时搜索插件

FiboSearch Pro是最受欢迎的WooCommerce 产品搜索插件。它为您的用户提供精心设计的高级 AJAX 搜索栏&#xff0c;并提供实时搜索建议。默认情况下&#xff0c;WooCommerce 提供非常简单的搜索解决方案&#xff0c;没有实时产品搜索&#xff0c;甚至没有 SKU 搜索。FiboSearch&…

DAY21

题目一 给定三个字符串str1、str2和aim&#xff0c; 如果aim包含且仅包含来自str1和str2的所有字符&#xff0c;而且在aim中属于str1的字符 之间保持原来在str1中的顺序&#xff0c;属于str2的字符之间保持原来在str2中的顺序&#xff0c;那么称aim是str1和str2的交错组成。实…

三个月从零入门深度学习,保姆级学习路线图!

小伙伴们大家好&#xff0c;这里是长沙图灵教育&#xff0c;我们从2001年开始进入教育行业&#xff0c;立足泛IT类职业教育&#xff0c;以打造新兴高新技术人才为宗旨&#xff0c;致力于成为优质的职业教育内容提供商;于2017年正式成立图灵&#xff0c; 在线教育有限公司。 到…

测试开发探索:“WeTalk“网页聊天室的测试流程与自动化

目录 引言&#xff1a; 测试开发目标&#xff1a; "WeTalk"项目背景 关于登录测试用例的设计 测试开发策略与流程 集成测试&#xff1a;Selenium JUnit 接口测试&#xff1a;Postman 测试用例的设计与实现 自动化测试演示&#xff1a; 用例一&#xff1a;登…

多线程进阶

多线程进阶 本章博客主要是围绕一些多线程相关的面试题&#xff0c;讨论的内容都是往年同学遇到的原题&#xff0c;以后面试也大概率会遇到的&#xff01;&#xff01;&#xff01; 常见的锁策略 锁策略指的不是某个具体的锁&#xff0c;是一个抽象的概念&#xff0c;描述的…

使用cloud-int部署nginx

参考 azure创建虚拟机,创建虚拟机注意入站端口规则开放80端口&#xff0c;高级中使用自定义数据&#xff0c;初始化虚拟机&#xff0c;安装nginx 连接CLI&#xff0c;验证是否安装成功 访问虚拟机IP查看是否部署成功 参考文档&#xff1a; https://learn.microsoft.com/zh-cn…

11款UML/SysML建模工具更新(2023.7)Papyrus、UModel……

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;drawio-desktop 21.6.5 更新时间&#xff1a;2023年7月22日 工具简介 开源绘图工具&#xff0c;用Electron编写&#xff0c;…

Skeleton-Aware Networks for Deep Motion Retargeting

Skeleton-Aware Networks for Deep Motion Retargeting解析 摘要1. 简介2. Related Work2.1 运动重定向&#xff08;Motion Retargeting&#xff09;2.2 Neural Motion Processing 3. 概述&#xff08;Overview&#xff09;4. 骨骼感知深度运动处理4.1 运动表征4.2 骨架卷积4.3…

23、springboot日志使用入门-- SLF4J+Logback 实现(springboot默认的日志实现),日志打印到控制台及日志输出到指定文件

springboot日志使用入门 ★ 典型的Spring Boot日志依赖&#xff1a; spring-boot-start.jar -- spring-boot-starter-logging.jar (Spring Boot的日志包&#xff09;-- logback&#xff08;core、classic&#xff09;-- log4j-to-slf4j.jar-- jul-to-slf4j.jar就是springboo…

IntentService

1. IntentService Android专门提供了一个异步的、自动停止的IntentService类。使用和普通的Service非常像&#xff0c;可以通过startService(Intent)通过Intent来提交请求&#xff0c;完成所有的任务后自己关闭。&#xff08;请求是在工作线程处理的&#xff09;好处&#xff…

[足式机器人]Part4 机械设计 Ch00/01 绪论+机器结构组成与连接 ——【课程笔记】

本文仅供学习使用 本文参考&#xff1a; 《机械设计》 王德伦 马雅丽课件与日常作业可登录网址 http://edu.bell-lab.com/manage/#/login&#xff0c;选择观摩登录&#xff0c;查看2023机械设计2。 机械设计-Ch00Ch01——绪论机器结构组成与连接 Ch00-绪论0.1 何为机械设计——…

Redisson实现锁以及redis缓存一致性问题

目录 RedissonClient实现最基本的锁 RedissonClient实现读写锁 RedissonClient实现闭锁 RedissonClient信号量 缓存不一致问题解决方案 一、双写模式 二、失效模式 RedissonClient实现最基本的锁 // 1、获取一把锁&#xff0c;只要锁的名字一样&#xff0c;就是同一把锁R…

redis分布式集群-redis+keepalived+ haproxy

redis分布式集群架构&#xff08;RedisKeepalivedHaproxy&#xff09;至少需要3台服务器、6个节点&#xff0c;一台服务器2个节点。 redis分布式集群架构中的每台服务器都使用六个端口来实现多路复用&#xff0c;最终实现主从热备、负载均衡、秒级切换的目标。 redis分布式集…

【EI复现】一种建筑集成光储系统规划运行综合优化方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x

毫无疑问&#xff0c;日志记录是任何应用程序最重要的方面之一。 当事情出错时&#xff08;而且确实会出错&#xff09;&#xff0c;我们需要知道发生了什么。 为了实现这一目标&#xff0c;我们可以设置 Filebeat 从我们的 golang 应用程序收集日志&#xff0c;然后将它们发送…

SCSS的基本用法

1、声明变量 $ 声明变量的符号 $ 下面这张图左半部分是scss的语法&#xff0c;右半部分是编译后的css。&#xff08;整篇文章皆是如此&#xff09; 2、默认变量 !default sass 的默认变量仅需要在值后面加上 !default 即可。 如果分配给变量的值后面添加了 !default 标志…