string类型操作

字符串切割

str.substr(索引,切割的个数)  ->  返回字符串

注意:第二个参数为切割的个数

string buf = "abcdefg";
buf.substr(0, 2); // 结果为 "ab"
buf.substr(1, 3); // 结果为 "bcd"

按字符切割为子字符串

利用sstream.h头文件和getline()函数

string s = "hello,world,!,My,name,is,C++", t;
stringstream ss;
ss << s;
vector<string> res;
while (getline(ss, t, ','))
res.push_back(t);
for (auto i : res)
cout << i << endl;

字符串输入

使用getline读入字符串可以保留字符串中的空格

getline(cin , s1);

使用cin  在遇到空格或回车时停止

cin >> s1;

多字符串的输入,遇到空格代表当前字符串赋值完成,转到下个字符串赋值,回车停止

cin >> s2 >> s3;

字符串比较

compare()函数  返回值为 int 类型

  • 简单用法:str.compare("abc");  // str = "abc" 则返回 0
  • 大小比较
    • a.compare(b) > 0  则表示 a > b
    • a.compare(b) < 0  则表示 a < b

cctype头文件(判断字符类型:大/小写字母、标点、数字等)

isalnum(c)  // 当是字母或数字时为真
isalpha(c)  // 当是字母时为真
isdigit(c)  // 当是数字是为真
islower(c)  // 当是小写字母时为真
isupper(c)  // 当是大写字母时为真
isspace(c)  // 当是空白(空格、回车、换行、制表符等)时为真
isxdigit(c) // 当是16进制数字是为真
ispunct(c)  // 当是标点符号时为真(即c不是 控制字符、数字、字母、可打印空白 中的一种)
isprint(c)  // 当时可打印字符时为真(即c是空格或具有可见形式)
isgraph(c)  // 当不是空格但可打印时为真
iscntrl(c)  // 当是控制字符时为真
tolower(c)  // 若c是大写字母,转换为小写输出,否则原样输出

搜索操作

int index = str.find(arg)  找到arg第一次出现的位置

str.rfind()  找到arg最后一次出现的位置

如果没找到返回 -1

例如:

string buf = "abcdefg";
buf.find("cde"); // 结果为 2
buf.find("ff"); // 结果为 -1
  • 找到args中任意一个字符最早\最晚出现的位置

s.find_first_of(args)   // 在s中找到args中任意一个字符最早出现的位置

s.find_last_of(args)   // 在s中找到args中任意一个字符最晚出现的位置

例如:

string s1 = "nice to meet you~";
cout << s1.find_first_of("mey") << endl; // 输出结果为 3,'e' 出现的最早
  • 在 s 中查找 第一个/最后一个 不在 args 中的字符的位置

s.find_first_not_of(args)  // 查找 s 中 第一个不在 args 中的字符的位置
s.find_last_not_of(args)  // 查找 s 中 最后一个不在 args 中的字符的位置
例如:
string s1 = "nice to meet you~";  
cout << s1.find_first_not_of("nop") << endl; // 输出结果为 1 ,'i' 不在 "nop" 里

类型转换(可以完成任意进制转10进制)

  • 将任意类型转换为string类型 (val可以是任何算数类型,int、double等)

string s = to_string(val)

  • 将string类型转换为整型(需包含cstdio头文件)

int num1 = stoi(s, p , b) //  s表示字符串,p是指针,用来保存s中第一个非数值的下标,默认为0,也可以是空指针

// b是进制数 ,将字符串作为几进制的数转换,最终结果仍然以10进制表示

//(相当于任意进制转为10进制)

还有其他几种接收类型

int num = stoi(s)  // 默认10进制

long num stol(s, p, b)  //  返回long型

unsigned long num stoul(s, p, b)  //  返回unsigned long型

long long num stoll(s, p, b)  //  返回long long型

unsigned long long num stoll(s, p, b)  //  返回unsigned long long型

  • 将string类型转换为浮点数

stof(s)  stof(s,p) stod(s,p) stold(s,p) // 分别对应float、double、long double类型

  • char型转数值函数原型 int atoi(const char *_Str) 传入参数是指针类型,所以要对字符取地址

atoi(c)  // int类型

atol(c)  // long类型

atoll(c)  // long long类型

atof(c)   // float类型

进制转换(10进制转其他)

使用<sstream>头文件

stringstream ss;

int num = 32;

ss << hex << num;

string hexStr = ss.str();

这样就通过字符串完成了10进制到16进制的转换

其他进制:

oct 8进制

默认 就是10进制

  • 进制转换配合std::setw 和 std::setfill使用效果更佳  头文件“iomanip”

    • setw() 用于设置后续输出操作的最小字段宽度。这意味着,如果输出的数据少于指定的宽度,它将在数据前面填充空格,以确保字段至少有指定数量的字符宽。如果数据超过指定的宽度,它将正常输出,而不会截断数据。
    • setfill() 用于设置填充字符,该字符用于填充由 std::setw 指定的字段宽度不足的部分。默认的填充字符是空格。

C++ string类型常用操作的更多相关文章

  1. Redis string类型常用操作

      Redis 有 string.list.set.zset.hash数据类型.string类型是最基础的,其他类型都是在string类型上去建立的,所以了解熟悉string类型的常用操作对于学习re ...

  2. redis入门:介绍、特点、安装、各类型常用操作

    一.redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. Redis支持多种类型的数据结构,如 字符串(strings), 散列(ha ...

  3. cb19a_c++_只适合string类型的操作_提取_追加_替换

    *cb19a_c++_只适合string类型的操作_提取_追加_替换三个substr重载函数-获取一个字符串的一部分六个append重载函数-追加字符十个replace重载函数-替换更换 重载函数越多 ...

  4. Kotlin——初级篇(八):关于字符串(String)常用操作汇总

    在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin--初级篇(三):数据类型详解这篇文章. 在 ...

  5. Kotlin——关于字符串(String)常用操作汇总

    在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin——初级篇(三):数据类型详解这篇文章. 在 ...

  6. Redis学习第二课:Redis String类型及操作

    Strings类型 String是最简单的类型,一个Key对应一个Value,String类型是二进制安全的,可以包含任何数据,比如jpg图片或序列化的对象. Strings类型的操作: Set:设置 ...

  7. [redis] redis 对string类型数据操作

    package com.xwolf.java.redis; import org.junit.Before; import org.junit.Test; import redis.clients.j ...

  8. 一:redis 的string类型 - 相关操作

    *redisclient使用: =============一类:string的方法================ 介绍:string是redis的最简单类型,一个key相应一个value,strin ...

  9. string类型常用函数

    一个字符串就是一个string类型数据,此类型变量我们可以把它看作一个只读数组,其元素是char变量,在这里我们来说下string类型的常用命令. 1.TocharArray():将此实例中的字符复制 ...

  10. Java String 函数常用操作 & format() 格式化输出,代码详解

    package _String_; import java.util.*; import java.math.*; import java.lang.*; public class _Strings ...

随机推荐

  1. django python 获取当天日期

    from datetime import date today = date.today() print(today) 在Python中,你可以使用datetime模块来获取当前日期.具体获取当前日期 ...

  2. [oeasy]python0025_ 顺序执行过程_流水_流程_执行次序

    顺序执行过程_流水_流程_执行次序 回忆上次内容 上次 熟悉了 vim编辑器 操作 作用 w 向前移动光标一个word b 向后移动光标一个word :r oeasy.py 读取文件到当前文件缓存 g ...

  3. GitHub Star 数量前 12 的开源无代码工具

    相关文章:GitHub Star 数量前 15 的开源低代码项目 在本篇文章中,我们将探索 12 款在 GitHub 上星级排名前列的开源无代码工具. 每款工具都旨在简化和加速开发过程,但各自侧重于不 ...

  4. CCF 有趣的数

    问题描述: 试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1 ...

  5. nats 简介和使用

    nats 简介和使用 nats 有 3 个产品 core-nats: 不做持久化的及时信息传输系统 nats-streaming: 基于 nats 的持久化消息队列(已弃用) nats-jetstre ...

  6. fastDFS安装时,./make.sh编译时出错找不到./make.sh: line 99: perl: command not found

    1.背景 报错如下: 2.解决方案 执行命令: yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-d ...

  7. 删除个文件夹,vfs2上传文件到ftp就异常553,这么不经事吗

    开心一刻 今天逛街碰到街头采访,一上来就问我敏感话题 主持人:小哥哥,你单身吗 我:是啊 主持人:你找女朋友的话,是想找一个小奶猫呢,还是小野猫呢 我沉思了一下,叹气道:如果可以的话,我想找个人,而且 ...

  8. Jenkins配置分布式构建环境——添加固定Agent并使用JNLP启动Agent详解

    1.概述 在<Jenkins部署架构概述>这篇博文中对Jenkins部署架构进行了讲解.对于分布式架构,Jenkins包括固态Agent和动态Agent两种方案. 固定Agent(常用于虚 ...

  9. Vue 项目 毒鸡汤 壮士可要来一碗!

    项目灵感来自"聆听远方"的毒鸡汤 非常简单 适合 Vue 新童鞋 按国际惯例 先上图 来不及解释了 快把代码复制走 poison-soup.html <!DOCTYPE ht ...

  10. TwinCAT3 - 实现自己的Tc2_SerialCom

    目录 1,前言 2,原生Tc2_SerialCom简单使用 3,实现自己的Tc2_SerialCom 3.1,EL6inData22B,EL6outData22B 3.2,ComBuffer 3.3, ...