C++字符串(string/to_string/append/substr/length/find/rfind/replace/stoi转数字转int)
之前大概的说了一下string这个类,在这篇文章中,本章继续学习string,这个类是c++独有的,在c语言中无法使用
#include <string>// 导入string的头文件
int main()
{// 定义一个叫name的变量,里面的值是二抱三抱std::string name{"二抱三抱"};std::cout << name << std::endl;
}
string类不需要考虑长度等一些问题,而使用char数组则必须考虑
std::string name;
printf("请输入点东西:");
std::cin >> name;// 随便输入什么都可以
std::cout << "你输入的是:"<< name << std::endl;
string类的字符串截取
// 其中2表示2个字节,因为中文一个字占用2个字节,所以只会打印出“表”
std::string name1{"表妹",2};
std::cout << name1 << std::endl;
// 此处会打印出"12"
std::string name2{ "123",2 };
std::cout << name2 << std::endl;
// 从第6个字节开始截取10个长度的内存(注意是从0开始而不是1)
// 下面这句话会打印出"喜欢二抱三抱",注意中文占2个字节
std::string name1{"真的好喜欢二抱三抱",6,10};
std::cout << name1 << std::endl;
// 打印出520
std::string name2{ "125206",2,3 };
std::cout << name2 << std::endl;
std::string a{"mayinshuang"};
// 从第2个字节开始截取,截取3个字节长度
std::cout << a.substr(2,3) << std::endl;//yin
// 从第2个字节开始截取,一直截取到最后
std::cout << a.substr(2) << std::endl;//yinshuang
string类的字符复制
// 复制5个字母s给value
std::string value(5,'s');
// 打印出"sssss"
std::cout << value << std::endl;
多个字符串连接,注意是多个字符串,字符串和其他类型是不可以直接连接的
std::string str;
// 下面这行代码会报错,string类拼接的时候
// 两个字符串相加,必须有一个是string类型的变量才可以,而下面三个都是常量
str = "真的" + "好喜欢" + "二抱三抱";
std::string str;
std::string pre{"真的"};
// 此处第一个值pre是个变量,所以pre+"好喜欢"=string类型
// 接下来再加上"二抱三抱",这样才可以
str = pre + "好喜欢" + "二抱三抱";
std::cout << str << std::endl;
字符串与数字类型连接,这个数字不只是int整数,double等其他的数字也可以
std::string a;
std::string b{"二抱三抱"};
int c{521};
a = b + std::to_string(c);
std::cout << a << std::endl;
下面是个字符串连接反人类的设计,我从来没想过c++竟然有这种写法
std::string a;
a = "喜欢""二抱三抱";
std::cout << a << std::endl;
append函数连接字符串
append方法还有重载参数,用来截取字符串,代码参考上面截取字符串的即可
std::string d{"ma yin "};
d.append("shuang");
std::cout << d << std::endl;
length方法获取字符串长度(对中文支持有问题)
std::string a{"mayinshuang"};
std::cout << a.length() << std::endl;//打印出11
string的本质也是char类型数组,所以它可以如下写
std::string a{"mayinshuang"};
std::cout << a[0] << std::endl;
两个字符串比较
std::string a{"shuang"};
std::string b{"shuang" };
std::cout << std::boolalpha<< (a == b) << std::endl;
也可以使用compare比较,但是这返回的是int类型
std::string a{"a"};
// a>b返回1,a=b返回0,a<b返回-1
std::cout << a.compare("b") << std::endl;
// 从第0个开始,比较2个字节长度
std::cout << a.compare(0,2,"ab") << std::endl;
find函数,查找字符串,等同于java的indexOf
还有个函数叫rfind,倒着搜索
std::string a{"mayinshuang"};
std::cout << a.find("yin") << std::endl;
// find函数如果没找到,则返回std::string::npos
if (a.find("eee") == std::string::npos) {std::cout << "没找到" << std::endl;
}
else {std::cout << "找到了" << std::endl;
}
replace函数用于替换
std::string a{"abcd"};
// 从第1个字节开始,要替换2个字节长度,替换后的内容是ys
std::string b=a.replace(1,2,"ys");
// 打印出"aysd"
std::cout << b << std::endl;
erase函数用于删除字符串里的内容
std::string a{"abcd"};
// 从索引1开始,要删除2个字节长度
std::string b = a.erase(1, 2);
// 打印出"ad"
std::cout << b << std::endl;
stoXXX字符串转数字(int/double/等等)
std::string a{"123"};
// stoi中的i表示int,还有sto其他
int b = std::stoi(a);
std::cout << b << std::endl;
stringstream字符串的流输入(相当于字符串连接)
#include <string>
#include <sstream>//这里引用sstream
int main()
{std::stringstream ss;ss << "欺负" << "抱抱" << std::hex << 15;std::string b = ss.str();std::cout << b << std::endl;
}
记录14.1-14.5
C++字符串(string/to_string/append/substr/length/find/rfind/replace/stoi转数字转int)相关推荐
- php字符串截取substr,php字符串处理函数:substr、mb_substr
字符串处理在实际应用中会频繁的用到,熟练掌握字符串截取技巧可以简化程序开发中很多代码处理. substr- 返回字符串的子串 string substr(string $string, int $st ...
- linux string split,linux下awk内置函数的使用(split/substr/length)
一.split 初始化和类型强制 awk的内建函数split允许你把一个字符串分隔为单词并存储在数组中.你可以自己定义域分隔符或者使用现在FS(域分隔符)的值. 格式: split (string, ...
- Oracle截取字符串:instr、substr、length函数的使用
1.字段中有以下字符串数据: 张三(zhangsan) 2.截取代码 ps:我的数据库表名为"shuizhu_test",该字段名为"username",详细请 ...
- 在C ++ STL中使用string :: to_string()将数字转换为字符串
to_string() is a library function of <string> header, it is used to convert numeric value (num ...
- C++ 字符串 string 截取 substr
C++ 字符串 string 截取 1.(substr(int index,int len))//表示从下标为index的地方开始算,截取len长度的字符[index默认是0,只有一个参数的话则表示的 ...
- STL详解(十) 字符串string
使用场合: 因为C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,它不必担心内存是否足够及字符串长度,可以使用输入输出流方式直接进行 ...
- 【LeetCode】字符串 string(共112题)
[3]Longest Substring Without Repeating Characters (2019年1月22日,复习) [5]Longest Palindromic Substring ( ...
- C++中字符数组和字符串string
字符数组 C++中字符数组用char str[]能够用来表示一个字符串. (1) 数组的大小和字符串的长度. 数组的大小一定要大于字符串的长度,由于系统会自己主动补上一个'\0'作为字符串的结束标 ...
- c++字符串string操作全解
#pragma once //防止文件被多重包含 #include <stdio.h> #include <stdlib.h> #include <string> ...
最新文章
- UVA140 Bandwidth带宽
- github的一些简单用法
- python数据类型汇总_python基础数据类型汇总
- AI如何提升10倍筛药效率?6月18日华为云携手中科院上海药物所揭开谜底
- Log4j和Slf4j的比较
- centos7 kvm虚拟机安装黑屏
- 使用PYTHON列表生成式过滤数据
- Atitti 类库 开发者 常用 api 目录 1.1. Meta anno注解元数据api	1 1.2. Ref 反射api	1 1.3. Database meta api	1 1.4.
- 关于coutends你不知道的那些事
- Java+MySQL基于ssm的大学生心理健康教育管理系统
- Web前端-Ajax-01
- 二阶段面试题——JavaScript
- Mysql高级查询语句练习
- coreseek-4.1-win32版本下windows安装记录
- GeekOS操作系统Project4
- 【C语言】三级指针烧脑题
- 如何加快Mac启动时间?Mac启动缓慢问题如何解决?
- 宝塔php原理,宝塔php建站教程
- mysql where or and_mysql where语句中 or 和 and连用注意点
- 【华为机试真题 C++】奥运会排行榜-100
热门文章
- Quadtrees UVA - 297
- strchr和strstr函数
- oracle ogg 12c mysql_Oracle GoldenGate 下载
- java反射获取包下所有的类
- Python 报错TypeError: expected string or bytes-like object
- 线程池-ThreadPoolExecutor
- java break 在if 中使用_Java | 使用JNA在Java中实现cls(cmd清屏)功能
- 半导体八大工艺流程图_大国重器,国芯基石 半导体离子注入机行业研究报告...
- linux下和htm的运行,嵌入式LINUX下CGI与HTML网页之间的通信
- python sys模块详解_python之sys模块详解