C++ 字符串 string 用法简述

2023-11-08

C++ 是 C 的超集,因此 C++ 中的字符串可利用 C 的写法,可以戳此链接了解;另外一种方法是利用 string 类库,本文主要介绍这种方式。

string 类使用起来比字符数组简单许多,能够像处理普通数组一样处理字符串。

声明

如果要使用 string,需要添加 string 头文件,该头文件位于名称空间 std 中。

#include <string>
using namespace std;

声明 string 的方式跟基本数据类型相同,按照变量名加变量类型的方式

string str;

初始化

如果要进行初始化,可以直接给 string 类型的变量进行赋值,还可以使用括号的形式。

string str = "abcd";
string str("abcd");

与其它变量一样,也可使用列表的方式进行初始化。

string str = {"abcd"};
string str {"abcd"};

类的设计能够自动处理 string 的大小,而 C 语言风格数组容易出现字符串长度超过声明大小的现象。

内容访问

  1. 通过下标访问

可以直接像字符数组那样去访问字符串,如 str[20]

  1. 通过迭代器访问

得到了迭代器 it,其类似于指针,可以通过 *it 来访问 string 里的每一位元素。begin() 函数表示字符串首个字母的位置,end() 函数表示最后一个字母的下一个位置。

for (string::iterator it = str.begin(); it != str.end(); it++)
	cout << *it << endl;;

赋值

string 类操作比数组要简单得多。如果用数组表示,不能将一个数组赋值给另一个数组,但可以将一个 string 对象赋值给另一个 string 对象。

string str1;
string str2 = "abcd";
str1 = str2;

拼接

使用运算符 + 将两个 string 对象合并起来,当然也可使用运算符 +=

string str1 = "abc", str2 = "xyz", str3;
str3 = str1 + str2;
str1 += str2;

比较

两个 string 类型可以直接使用 ==!=<<=>>= 比较大小。

长度

size() 返回 string 的长度,即存放的字符数。length() 功能相同。

str.size();
str.length();

插入

pos 号位置插入字符串 str2

str.insert(pos, str2);

删除

删除单个元素。

str.erase(*it);

删除一个区间内所有的元素。

str.erase(first, last);

first 为要删除区间的起始迭代器,last 为要删除区间的末尾迭代器的下一个地址。或者 pos 为需要开始删除的起始位置,length 为删除的字符个数。

str(pos, length);

清空string中的数据。

str.clear();

字串

截取子串。

substr(pos, len);

返回从 pos 号位开始且长度为 len 的子串。

查找

str.find(str2);

str2str 的子串时,返回其在 str 中第一次出现的位置;如果 str2 不是 str 的子串,那么返回 string:npos

str.find(str2.pos);

strpos号位置开始匹配str2,返回值与上相同。

string::npos是一个常数,其本身值为-1,但由于是unsigned_int类型,因此实际上也可以认为是 unsigned_int 类型的最大值。string::npos 用作 find 函数失配时的返回值。

if (string::npos == -1);
if (string::npos == 4294967295);

替换

str.replace(pos, len, str2)

strpos 号位开始、长度为 len 的子串替换为 str2

str.replace(it1, it2, it3);

str 的迭代器 [it1, it2) 范围的子串替换为 str2

与数进行转换

stoi() 将字符串转化为整型。

string s = "99";
int n = stoi(s)

此外还有 stol()stoll() 函数,分别表示转化为 long 型和 long long 型。还有 stoul()stoull() 函数,表示转化为无符号整型。还有 stof()stod()stold() 表示转化为浮点型。

to_string() 表示把整数或浮点数转化为字符串。

int n = 99;
string s = to_string(n);

输入

可使用 cin 输入,但是 cin 以换行、空格等作为分隔,因此使用它只能读取一个单词,不能读取包含空格的字符串。

C++提供了 getline()get() 函数读取一行文本作为字符串输入,详细可戳此链接查看。

更多内容可以查看文档

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

C++ 字符串 string 用法简述 的相关文章

  • JavaScript:搜索字符串时的 indexOf 与 Match? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用之间是否存在明显的性能差异 str indexOf src and str match src 我个人比较喜欢match 和正则表达式 但同
  • 出现错误:字符串未被识别为 C# 中的有效日期时间

    出现如下错误 mscorlib dll 中发生类型为 System FormatException 的未处理异常附加信息 字符串未被识别为有效的日期时间 我正在使用这段代码 string datetime DateTime Parse en
  • 正则表达式 匹配捕获组内的文本

    示例文本 ruby object DynamicAttribute attributes resource id 1 resource type Applicant string value Michael int value id 359
  • Java在字符串中看不到空格[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 因此 我正在尝试解析一些具有多行文本的文本文件 我的工作是检查所有单词并将其打印在文件中 因此 我读取了所有行 循环遍历它们并用空格分隔每
  • 如何将 SQL 结果存入 STRING 变量?

    我正在尝试获取 C 字符串变量或字符串数 组中的 SQL 结果 是否可以 我需要以某种方式使用 SqlDataReader 吗 我对 C 函数和所有功能非常陌生 曾经在 PHP 中工作 所以如果可以的话请给出一个工作示例 如果相关 我已经可
  • “HH:MM:SS”中的秒数

    获取 hh mm ss 等字符串表示形式的秒数的最佳方法是什么 显然 Integer parseInt s substring 3600 Integer parseInt s substring 60 Integer parseInt s
  • STL列表迭代器不会更新我的对象

    我使用列表迭代器将宠物的所有年龄设置为 1 但更改不会在 for 循环之外持续存在 include
  • 在 C++ 中,std::string::push_back() 的摊余复杂度是 O(1) 吗?

    我知道标准指定它适用于向量 但是字符串呢 是的 它是摊销常数时间 请参见第 716 页的表 101本文件的 http www open std org jtc1 sc22 wg21 docs papers 2012 n3485 pdf 表
  • 以 str.format 切片字符串

    我想实现以下目标str format x y 1234 5678 print str x 2 str y 2 我能够做到这一点的唯一方法是 print 0 1 format str x 2 str y 2 现在 这是一个例子 我真正拥有的是
  • Python,将字典存储在数据库中

    在数据库中存储和检索 python 字典的最佳方法是什么 如果您对使用传统 SQL 数据库 例如 MySQL 不是特别感兴趣 您可以研究非结构化文档数据库 其中文档自然映射到 python 字典 例如MongoDB http www mon
  • 正则表达式提取美国邮政编码,但不提取假代码

    使用 XML 包和 XPath 从网站上抓取地址 有时我只能得到一个嵌入了我想要的邮政编码的字符串 提取邮政编码很简单 但有时会显示其他五位数字的字符串 以下是 df 中问题的一些变体 zips lt data frame id seq 1
  • 正则表达式 - 避免表达式中出现字符串

    我正在尝试创建一个应该匹配以下情况的正则表达式 如果单词完全匹配 first second third 那么匹配应该失败 但如果它周围有任何字符 那么应该匹配该字符串 我还需要避免字符串中的某些字符集 如果这些字符是字符串的一部分 则匹配结
  • 在 MySQL 中分割逗号分隔值

    我正在尝试将字符串中以逗号分隔的 值拆分为多列 样本数据 COL1 COL2 COL3 000002 000003 000042 09 31 51 007 004 007 预期输出 Pno Cno Sno 000002 09 007 000
  • 如何用空新行分割字符串

    我的文件包含这个字符串 a b c 现在我想阅读它并用空行分割它 所以我有这个 text split n n where text is output of file 问题是这不起作用 当我将新行转换为字节时 我看到 n n 表示为 10
  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 解析格式化字符串

    我正在尝试创建一个通用格式化程序 解析器组合 示例场景 我有一个 string Format 的字符串 例如var format 0 1 我有一个用于输入的对象 字符串 数组 例如var arr new asdf qwer 我正在使用格式字
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • 使用自定义比较器在 Java 中创建 SortedMap

    我想创建一个TreeMap在 Java 中具有自定义排序顺序 排序后的键是字符串 需要根据第二个字符进行排序 这些值也是字符串 示例地图 Za FOO Ab Bar 您可以像这样使用自定义比较器 Comparator

随机推荐

  • 农业银行联行号怎么查询_中国农业银行大额联行号12位是什么,怎么查找

    农业银行查询开户行名称的方法有几种 第一种 电话查询 1 确定银行的客服电话 农行95599 在银行卡卡上都有写明客服电话 直接拨打 2 打电话到客服人工服务 要求客服帮你查询 直接提供银行卡号 3 稍等一下 客服即可告诉你该卡的开户行是哪
  • JSP include 引入页面文件乱码 解决办法

    解决JSP include 引入文件出现乱码解决办法一 第一种情况可以修改被include的文件 1 当jsp include动态文件时 jsp文件 可以在被include的jsp文件头部加上代码 可以解决 2 当jsp include静态
  • QT项目出现multiple definition of错误解决方案

    QT项目出现multiple definition of错误解决方案 今天把代码搬到QT上后出现了许多multiple definition of错误 总结下 解决方法一 在 pro文件下查看SOURCES 和HEADERS 也没有重复引入
  • 【转】Notepad++ 中文查找(中文搜索)问题解决方法

    原文 http www 365fy com fybbs viewthread php tid 9024 Notepad 查找中文字符时有问题 找到的结果根本就不是你要查的内容 以下两种临时解决方法任选一种即可解决 方法一 查找时 在 查找模
  • iphonex 序列号_X的序列号什么开头有什么意思吗?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 iPhone序列号的第一位字母 以 C 开头为深圳 以 D 开头为成都 以 F 开头为郑州 序列号的第四位代表生产年份 用20个字母表示 26个英文字母中除去 A B E I O U 注意是以每
  • 解决QT+VS中无法打开ui_xxx.h文件

    在VS中添加插件Qt VS Tools 就可以在VS中写QT项目了 但是VS中写QT项目和在QT Creater中并不完全一样 VS中的项目文件结构是 但是如图中的widget h文件中包含了ui widget h文件 但提示无法打开ui
  • 基于Tiny C compiler的c脚本混合编程方法

    基于Tiny C compiler的c脚本混合编程方法 2006 11 06 23 23 1831人阅读 评论 0 收藏 举报 TCC简要介绍 TCC 最有趣的特性是可以用 UNIX 系统上常见的 usr bin tcc 的方式来执行 AN
  • unity---Mesh网格编程(二)

    目录 1 绘制一个3X3的面 2 代码 unity Mesh网格编程 一 1 绘制一个3X3的面 前面说了mesh的基础知识点 现在绘制一个3X3的面 2 代码 using System Collections using UnityEng
  • 【Java】基本类型之浮点类型(七)

    浮点类型 即带小数部分的数据 有两种常用数据类型 float类型 double类型 表示形式有十进制数形式 科学计数法形式 例如 5 12e2 5 12 10 2 5 12E2 5 12 10 2 e或E代表指数为10 还有三种特殊的浮点数
  • HDFS的数据读取

    HDFS读数据流程 1 客户端用函数open 打开文件 2 FileSystem调用元数据节点 得到数据块信息 并对每一个数据块 元数据节点返回 保存数据块的数据节点地址 3 客户端调用stream的read 函数开始读取数据 4 FSDa
  • 2017年第三届 美亚杯电子取证 团体赛 wp

    17美亚杯团体 wp 目录 17美亚杯团体 wp Linux Raid LVM Win8 win8 内存 IPad7 Linux Raid LVM Win8 win8 内存 IPad7
  • [转载]One-Hot编码

    在我们数据分析 建模的时候 首先要处理的就是各种数据 数据的类型也不仅仅局限于连续型数值 比如 性别 城市名等等此类的指标也是很多的 这种类型 它是不具备序列性 也不能比较大小的 如果这个时候简单的用数字来替换 那么就给这种赋予了大小的属性
  • partition算法的3种形态

    1 原地重写法 条件是小于轴 不符合交换到后面 int partition1 int a int begin int end if end begin lt 1 return end begin int i begin 1 for int
  • 苹果测试软件testflight游戏,教程:如何使用TestFlight 参与App 测试

    工具 原料 iPhone一台 iOS8以上版本 注册过的Apple ID账号密码 方法 步骤 在AppStore上面搜索 TestFlight 软件 1 打开iPhone上的AppStore软件 2 选择 搜索 栏目 3 输入 TestFl
  • GEE

    multcloud网址 https www multcloud com multcloud账号注册很简单 一分钟即可成功 在邮箱点击激活邮件后登录multcloud 然后连接google drive 选中连接的google drive中要下
  • 概率有向图模型之贝叶斯网络

    慕课上北理工的课 目录 1 概率有向图模型 1 1 基本原理 1 2 例子 1 3 结论 2 贝叶斯网络 2 1 贝叶斯网络概念 2 2 贝叶斯定理 2 3 贝叶斯假设 2 4 经验贝叶斯估计 2 5 有向分离 D Separation 2
  • Mysql中的WITH ROLLUP用法

    Mysql中的WITH ROLLUP用法 1 WITH ROLLUP 在group分组字段的基础上再进行统计数据 例子 首先在name字段上进行分组 然后在分组的基础上进行某些字段统计 表结构如下 CREATE TABLE test Id
  • 区块链隐私保护方案:零知识证明、可信执行、多方计算、同态加密

    在现在这个网络发达的时代 个人隐私已经变成一个既敏感又常见的问题 随着有越来越多的人加入区块链 私人钱包被盗或是隐私外露等等这些事件层出不穷 这使得大家对隐私保护的需求在逐步提升 区块链技术最受人敬仰的是它具有匿名 不可篡改以及可追溯的属性
  • 浅析Java编程中类和对象的定义

    浅析Java编程中类和对象的定义 1 什么是类 答 类是客观存在的 抽象的 概念的东西 2 什么事对象 答 对象是具体的 实际的 代表一个事物 例如 车是一个类 汽车 自行车就是他的对象 关于类与对象的描述 类是对象的模版 对象是类的一个个
  • C++ 字符串 string 用法简述

    C 是 C 的超集 因此 C 中的字符串可利用 C 的写法 可以戳此链接了解 另外一种方法是利用 string 类库 本文主要介绍这种方式 string 类使用起来比字符数组简单许多 能够像处理普通数组一样处理字符串 目录 声明 初始化 内