C++ string类型常用操作
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类型常用操作的更多相关文章
- Redis string类型常用操作
Redis 有 string.list.set.zset.hash数据类型.string类型是最基础的,其他类型都是在string类型上去建立的,所以了解熟悉string类型的常用操作对于学习re ...
- redis入门:介绍、特点、安装、各类型常用操作
一.redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. Redis支持多种类型的数据结构,如 字符串(strings), 散列(ha ...
- cb19a_c++_只适合string类型的操作_提取_追加_替换
*cb19a_c++_只适合string类型的操作_提取_追加_替换三个substr重载函数-获取一个字符串的一部分六个append重载函数-追加字符十个replace重载函数-替换更换 重载函数越多 ...
- Kotlin——初级篇(八):关于字符串(String)常用操作汇总
在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin--初级篇(三):数据类型详解这篇文章. 在 ...
- Kotlin——关于字符串(String)常用操作汇总
在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin——初级篇(三):数据类型详解这篇文章. 在 ...
- Redis学习第二课:Redis String类型及操作
Strings类型 String是最简单的类型,一个Key对应一个Value,String类型是二进制安全的,可以包含任何数据,比如jpg图片或序列化的对象. Strings类型的操作: Set:设置 ...
- [redis] redis 对string类型数据操作
package com.xwolf.java.redis; import org.junit.Before; import org.junit.Test; import redis.clients.j ...
- 一:redis 的string类型 - 相关操作
*redisclient使用: =============一类:string的方法================ 介绍:string是redis的最简单类型,一个key相应一个value,strin ...
- string类型常用函数
一个字符串就是一个string类型数据,此类型变量我们可以把它看作一个只读数组,其元素是char变量,在这里我们来说下string类型的常用命令. 1.TocharArray():将此实例中的字符复制 ...
- Java String 函数常用操作 & format() 格式化输出,代码详解
package _String_; import java.util.*; import java.math.*; import java.lang.*; public class _Strings ...
随机推荐
- 数据仓库建模工具之一——Hive学习第三天
1.Hive的基本操作 1.1 Hive库操作 1.1.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/hive/warehouse/*.db. create database ...
- 领域驱动设计(DDD)分层架构的三种模式
模式一:四层架构 1.User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令.这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人.2.Application为 ...
- redis如何实现主从同步
redis实现主从同步分为两种:全量同步和增量同步:第一次连入集群的slave需要进行全量同步,那些断开后重连的slave需要进行增量同步 每个redis都有自己的replid,他们是master的标 ...
- 为团队配置Linux环境,简单高效的项目共享方案
前言 最近好久没写博客了,事情太多了,我还搞了个新的好玩的项目,等后续做得差不多了来写篇文章介绍一下. 在我们目前的AI项目中,团队需要共同使用一台GPU服务器来做模型训练和数据处理.为了让每个团队成 ...
- 【Java】File 文件类
File 文件类 File类的一个对象,代表了一个文件和一个文件目录/文件夹 File类所属在java.io 的包下 构造器部分 - 以parent为父文件,child为子路径创建File对象,可以理 ...
- 【MySQL】Windows-8.0.19 安装版 下载安装
下载地址 https://dev.mysql.com/downloads/windows/installer/8.0.html 跳过登陆 只选择基本服务 安装依赖环境,如果已存在,圆圈显示绿点,下一步 ...
- Ubuntu系统中CUDA套件nvvp启动后报错Unable to make protected void java.net.URLClassLoader.addURL(java.net.URL) accessible: module java.base does not "opens java.net" to unnamed module @380fb434
最近在看cuda方面的内容,需要对cuda代码做一些性能分析,于是需要使用nvvp,但是启动nvvp后报错:Caused by: java.lang.reflect.InaccessibleObjec ...
- SpringBoot Session共享,配置不生效问题排查 → 你竟然在代码里下毒!
开心一刻 快 8 点了,街边卖油条的还没来,我只能给他打电话 大哥在电话中说到:劳资卖了这么多年油条,从来都是自由自在,自从特么认识了你,居然让我有了上班的感觉! Session 共享 SpringB ...
- Redis中的Hash类型常用命令
一.hset命令作用:设置hash类型值:格式:hset key field value案例:192.168.0.111:0>hset product name 苹果"1" ...
- WhaleScheduler为银行业全信创环境打造统一调度管理平台解决方案
项目背景 数字金融是数字经济的重要支撑和驱动力.近年来,我国针对数字金融的发展政策频频出台,<金融科技发展规划 (2022-2025年)>.<"十四五"数字经济发 ...