string的用法

2023-11-16

std::string的初始化

std::string 变量名称{“字符串”,要截取的长度};
std::string str{"123456”,3};
str= "123"
//注*中文时支持不佳
    

std::string 变量名称{“字符串”,起始位置,截取长度};
std::string str{"123456”,1,4};
str= "234"
//注*中文时支持不佳
    

std::string变量名称(要复制的个数,'字符');
std::string str(6, 'a');
str= "aaaaaa"

std:string连接字符串

std::string str(6, 'a’);
str=str+"123 ";
str= "aaa123"
str="sss"+"sss";//错误  右边一定要有一个str变量
str=str+"sss"+"sss";

std::string连接字符串和数字

std::string std:to_string(数字);
std::string str=std:to_string(123);
str=“123"


int age;cin age;
string ls="用户的年龄是:";
string str=ls+to_string(age);

深入探讨std::string的连接

std::string str;
str=“123"+"456";//错误

//变通方法:
str=string{“123"}+”456";

str="456"+"123"+string{"123"};//错误   先算"456"+"123"就出错了
str=“456”+("123"+string{" 123"});


str+="abc"+"sss";//出错,+优先级高于+=


//变通方法
str="123""456";//两个都得是常量
str="123"string{"456"};//错误


string str{"123"};
char a;cin>>a;
str+=a+'o';//等价于str+=char(a+'o'},char类型可以相加

.append()连接字符串

std::string str;
.append();方法可以连接一个字符串
str.append("s");


string str{"123"};
str.append("456"}.append{"789"};//可以无限append


//append可以使用初始化的方式
string str{"123"};
str.append("456",1);//1234
str.append("456789",2,5);//1236789

.substr()截取字符串

.substr(起始位置,要截取的长度);
```
std:string str{ "123456"};
//不输入终止位置,默认截取到最后
std::string strsub{str.substr(1)};//strsub=“23456"
std::string strsubA{str.substr(1,3)};//strsubA=“234”

//可以连环截取
str.substr(7).substr(3);
.length()长度
std:string.length();可以得到string的长度
std:string str{"123”};
str.length()将回返回3
//注*中文支持不良

string字符串的比较

//string字符串可以用比较运算符和另外一个string字符串或者C标准的字符串(char*)来进行比较
//支持的比较运算符有==!=>< >=<=
//比较的原则为依次进行字符大小的比较
//比如
string strA{ "abcd"};
string strB{ "bcde”};
//结果为strB>strA

.compare()字符串的比较

.compare()是string类型目带的一个方法,可以用来比较与另一个string或C标准字符串的大小, 比较完成后返回的是一个int类型的值;

比如:

string strA{ "abcd"};
strA.compare( "abcd”);//返回0
strA.compare( "bcdef");//返回负数
strA.compare( "ABCD");//返回正数
//因此这样的写法是得不到你想要的结果的
if(strA.compare("abcd”))//错误

.find()字符串的搜索

.find()是string类型自带的一个方法,用来搜索字符串种的内容,并且返回内容所在的位置,当返回值为std:string:npos时,表示未找到

语法:

.find(要搜索的内容,开始搜索的位置);
.find(要搜索的内容,开始搜索的位置,要纳入搜索的长度);
string strA{"abcd cdef ghijk” };
strA.find("cdef”);//返回值为5
strA.find("cdef”,6);//返回值std:string::npos
strA.find("cdef”,0.2);//返回值为2等同于从位置0开始搜索cd
std::string::npos是一个常量,它表示std::string中的一个特殊值。它通常用于表示查找操作失败或没有匹配项的情况。
npos的值是一个std::string::size_type类型的静态常量,其值通常是一个非常大的数(例如,4294967295或18446744073709551615,取决于实现)。
在std::string的成员函数中,如果查找操作没有找到所需的子串,那么它将返回std::string::npos。

.insert()插入字符串

.insert() insert是string类型的一个方法,可以在一个string字符串的指定位置插入另一个字符串;

基本语法:

.insert(要插入的位置,要插入的字符串);
string id{ "id=;"};
id.insert(3,"testid");//id的值为id=testid;
.insert(要插入的位置,要插入的字符个数,要插入的字符);
string id{"id=;"};
id.insert(3,6,'*');//id的值为id=******;

.insert()的扩展用法

基本语法:

.insert(要插入的位置,要插入的字符串,要插入的字符串的起始位置,要插入的大小);
string id{"id=;"};
id.insert(3,"killertestid123456",6,6);//id的值为id=testid;
.insert(要插入的位置,要插入的字符串,要插入的大小);
string id{"id=;"};
id.insert(3,"killertestid123456",6);//id的值为id=killer;

string内存重新分配

int main()
{
    string str{ "123" };
    cout << (int)&str <<" "<< (int)&str[0] <<" "<< (int)&str[1] << endl;
    str += "45678910111213141516";
    cout << (int)&str << " " << (int)&str[0] << " " << (int)&str[1] << endl;
}

19920928 19920932 19920933
19920928 24296568 24296569
//str地址不变,之后因为加了字符串之后放不下,内存重新分配了

.c_str()与.data()

在内存里的布局,与C字符串(char*)不同的是,C字符串以0结尾, 而string字符串由于有专门记录其长度的属性, 在实现的时候,并没有严格要求是否以0结尾!

但是在C++11标准推出后,要求string字符串也以0结尾

通过.c_str()方法可以得到一个const char* 的指针,指向str储存字符数据的内存空间(常量指针,值不能修改)

通过.data()方法可以得到一个const char* 的指针,指向str储存字符数据的内存空间(常量指针,值不能修改)

在C++17标准下,.data()方法得到的是一个char* 的指针

.replace()替换字符串的内容

.replace()是string类型提供的一种方法,可以替换string字符串中的内容;

语法

.replace(要替换的内容起始位置,要替换的长度,“替换后的内容");
string str{"id=user;"];
str.replace(3,4,"zhangsan");//str的内容为:id=zhangsan;
.replace(要替换的内容起始位置,要替换的长度,替换后的字符长度,'字符);
str.replace(3,4,6,'*');
str的内容为:id=******。

.erase(), .clear()删除字符串的内容

.erase()是string类型提供的一种方法,可以删除string字符串中的内容;

```.erase(要删除的起始位置,要删除的起始长度);
string str{"id=user;"};
str.erase(3,4);
str的内容为:id=;
.erase(要删除的起始位置);从起始位置开始删除所有内容
string str{ "id=user;"};
str.erase(3);
str的内容为:id=

.erase();删除字符串所有内容.

clear();删除字符串所有内容

字符串

字符的储存:字符→编码表→二进制数字

字符的读取:二进制数字→编码表→字符

字符编码表:

UNICODE GBK ASCII等等

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

string的用法 的相关文章

  • C#中如何检测字符串是否为货币

    通常当我需要转换时currency string 如 1200 55 z 或 1 249 到十进制值我这样做 if currencyString Contains z decimal value Decimal Parse dataToCh
  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • 实体框架代码优先 - 在另一个文件中配置

    使用 Fluent API 将表到实体的映射分开的最佳方法是什么 以便它全部位于单独的类中 而不是内联在 OnModelCreating 方法中 我目前在做什么 public class FooContext DbContext prote
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • .NET 可移植类库中的 .ToShortDateString 发生了什么

    我想知道为什么没有 ToShortDateString在 NET 可移植类库中 我有 2 个项目 Silverlight 和常规 NET 类库 使用相同的代码 并且代码涉及调用 ToShortDateString on a DateTime
  • 有没有比这更快的方法来查找目录和所有子目录中的所有文件?

    我正在编写一个程序 需要在目录及其所有子目录中搜索具有特定扩展名的文件 这将在本地驱动器和网络驱动器上使用 因此性能是一个问题 这是我现在使用的递归方法 private void GetFileList string fileSearchP
  • Qt中正确的线程方式

    我的图像加载非常耗时 图像很大 并且在加载时也完成了一些操作 我不想阻止应用程序 GUI 我的想法是在另一个线程中加载图像 发出图像已加载的信号 然后用该图像重绘视图 我的做法 void Window loadImage ImageLoad
  • 组合 Datepicker 和 Timepicker 值 Win 8.1

    我试图同时使用 Datepicker Timepicker 来返回可以存储在数据库中的 DateTime 例如 我想要安排会议的开始日期和结束日期 如果适用 我将如何将这些值组合成 SQL 数据库可以处理的正确格式 任何反馈都会很棒 我让这
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 在可观察项目生成时对其进行处理

    我有一个IObservable它会生成一次性物品 并且在其生命周期内可能会生成无限数量的物品 因此 我想在每次生成新项目时处理最后一个项目 因此Using http reactivex io documentation operators
  • 标准 C 中的 sizeof 与 sizeof()? [复制]

    这个问题在这里已经有答案了 我看到一些直接使用 sizeof 的代码 想知道它是否是标准 C 令我惊讶的是 它运行得很好 这是一个例子 include
  • 如何从枚举中选择随机值?

    给定 C 中的任意枚举 如何选择随机值 我没有找到这个非常基本的问题 我会在一分钟内发布我的答案作为任何人的参考 但请随意发布你自己的答案 Array values Enum GetValues typeof Bar Random rand
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • C# ToString("MM/dd/yy") 删除前导 0 [重复]

    这个问题在这里已经有答案了 可能的重复 格式化 NET DateTime Day 不带前导零 https stackoverflow com questions 988353 format net datetime day with no
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 宏观评价[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 undefined behavior and sequence points 我无法理解以下宏
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • 深入理解gtest C/C++单元测试经验谈

    Google C Testing Framework 简称gtest http code google com p googletest 是Google公司发布的一个开源C C 单元测试框架 已被应用于多个开源项目及Google内部项目中
  • spring Data JPA 拾遗

    Preface JPA在国内的使用频率较小 但也是一个值得学习的极为优秀的ORM框架 DDD的思想在里面体现得淋漓尽致 结构图 配置 1 2 3 4 5 6 7 8 9 10 11 spring jpa generate ddl false
  • 搭建jboss

    jboss 是中间件comcat是框架 jboss 基于java需要安装jbk配置环境变量 配置环境变量 我的电脑 右键 属性 高级 环境变量 新建系统变量 变量名为 JAVA HOME 变量值 C Program Files Java j
  • SpringBoot系统列 5 - 接口版本控制、SpringBoot FreeMarker模板引擎

    接着上篇博客的代码继续写 1 接口版本控制 一个系统上线后会不断迭代更新 需求也会不断变化 有可能接口的参数也会发生变化 如果在原有的参数上直接修改 可能会影响线上系统的正常运行 这时我们就需要设置不同的版本 这样即使参数发生变化 由于老版
  • 数据结构(Python版):线性表

    2 线性表 线性数据结构 线性结构是一种有序数据项的集合 其中每个数据项都有唯一的前驱和后继 除了第一个没有前驱 最后一个没有后继 新的数据项加入到数据集中时 只会加入到原有某个数据项之前或之后 具有这种性质的数据集 就称为线性结构 顺序表
  • 学习常用模型及算法:3.评价和预测

    评价方法 1 加权平均法 最简单的方法 但不能忽视 2 层次分析法 该题可划分为三层 首先我们要求得准则层对目标层的权重 我们可以引进判断矩阵的概念 以两两比较的方式判断每两个指标中哪个更为重要 因为这里是4个判断标准 所以n 4 RI n
  • 5G QoS控制原理专题详解(7)-Default QoS Flow探秘

    相关文章会在公众号同步更新 最近工作忙 更新完公众号后 经常容易忘记再CSDN上再发 公众号上的文章更新的能快一些 各位同学有兴趣可以关注一下 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避
  • 【MybatisPlus逆向工程】代码生成器

    使用mybatis plus的逆向工程生成entity controller service mapper的初始代码 参考链接 https baomidou com pages d357af E6 B7 BB E5 8A A0 E4 BE
  • linux:ubuntu 查看ip

    解决方法 ifconfig a 或者sudo vi etc netplan 00 installer config yaml 进行查看
  • SpringSecurity基本使用

    文章目录 1 基本使用 2 自定义配置用户名与密码 3 自定义登录页面 4 基于权限访问控制 5 自定义403 6 使用注解 Secured PreAuthorize PostAuthorize PostFilter PreFilter 1
  • 芯片组x299是服务器主板吗,X299主板怎么样/值得买吗?新一代酷睿i9和发烧级X299主板全面深度评测...

    主板外观 配置 丰富的PCIe扩展插槽一向是Extreme至尊级平台的优势之处 5条长插槽中的两条有LED灯效设计和合金固化 需要组双路显卡的时候就优先使用这两条合金固化的插槽就好 CPU供电模块 CPU供电模块有9相合金数字供电 也有设计
  • pandas对文本数据进行长度统计

    在NLP的各项任务中 都需要对语料的长度有一个概括性的了解 例如平均长度 最大长度 大多数语料的长度范围等 以此来确定输入模型时的最大文本长度 pandas库有一种写法可以快速的统计文本语料的长度情况 pd pandas Series po
  • Ubuntu 挂载硬盘

    安装 nfs服务 三台服务器都需要安装 sudo apt get install nfs kernel server nfs common 数据盘操作 安装 完成后在数据盘服务器 修改etc exports文件增加共享盘 home Odoo
  • Arduino - PC817C光耦

    元件简介 PC817C是光隔离线性反馈控制器件 是PC817系列中常用的一个型号 左边 1 2脚 输入端 控制端 是一个发光二极管 右边 3 4脚 输出端 受控端 是一个三极管 CE极 控制端与受控端是隔离的 PC817C主要技术参数 控制
  • pandas 更改单元格的值,使用索引为pandas DataFrame中的特定单元格设置值

    I ve created a Pandas DataFrame df DataFrame index A B C columns x y and got this x y A NaN NaN B NaN NaN C NaN NaN Then
  • python collections.OrderedDict有序字典的使用

    detectron2中大量的使用OrderedDict 有序字典 有序字典可以按字典中元素的插入顺序来输出 python的基础数据类型中的字典类型分为 无序字典与有序字典两种类型 1 无序字典 普通字典 遍历一个普通字典 返回的数据和定义字
  • 关于api-ms-win-crt-runtime

    关于api ms win crt runtime 1 1 0 dll缺失的解决方案 问题原因 有时 我们在打开文件程序的时候经常出现一些关于以下的错误 无法启动此程序因为计算机中丢失api ms win crt runtime 1 1 0
  • C语言 输出 1000 对孪生素数

    孪生素数就是差值为 2 的成对素数 例如3和5 5和7 11和13 代码实现 include
  • 如何解决vue项目打包内存溢出问题

    在打包命令配置文件中加入图中代码即可 cross env NODE OPTIONS max old space size 4096
  • string的用法

    std string的初始化 std string 变量名称 字符串 要截取的长度 std string str 123456 3 str 123 注 中文时支持不佳 std string 变量名称 字符串 起始位置 截取长度 std st