之前大概的说了一下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)相关推荐

  1. php字符串截取substr,php字符串处理函数:substr、mb_substr

    字符串处理在实际应用中会频繁的用到,熟练掌握字符串截取技巧可以简化程序开发中很多代码处理. substr- 返回字符串的子串 string substr(string $string, int $st ...

  2. linux string split,linux下awk内置函数的使用(split/substr/length)

    一.split 初始化和类型强制 awk的内建函数split允许你把一个字符串分隔为单词并存储在数组中.你可以自己定义域分隔符或者使用现在FS(域分隔符)的值. 格式: split (string, ...

  3. Oracle截取字符串:instr、substr、length函数的使用

    1.字段中有以下字符串数据: 张三(zhangsan) 2.截取代码 ps:我的数据库表名为"shuizhu_test",该字段名为"username",详细请 ...

  4. 在C ++ STL中使用string :: to_string()将数字转换为字符串

    to_string() is a library function of <string> header, it is used to convert numeric value (num ...

  5. C++ 字符串 string 截取 substr

    C++ 字符串 string 截取 1.(substr(int index,int len))//表示从下标为index的地方开始算,截取len长度的字符[index默认是0,只有一个参数的话则表示的 ...

  6. STL详解(十) 字符串string

    使用场合: 因为C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,它不必担心内存是否足够及字符串长度,可以使用输入输出流方式直接进行 ...

  7. 【LeetCode】字符串 string(共112题)

    [3]Longest Substring Without Repeating Characters (2019年1月22日,复习) [5]Longest Palindromic Substring ( ...

  8. C++中字符数组和字符串string

    字符数组 C++中字符数组用char str[]能够用来表示一个字符串. (1)   数组的大小和字符串的长度. 数组的大小一定要大于字符串的长度,由于系统会自己主动补上一个'\0'作为字符串的结束标 ...

  9. c++字符串string操作全解

    #pragma once //防止文件被多重包含 #include <stdio.h> #include <stdlib.h> #include <string> ...

最新文章

  1. 如何做EL表达式能调用的函数-小例子(转)
  2. 多代理集群调度:可伸缩性和灵活性
  3. WPF 展示视频修改为WriteableBitmap
  4. mysql用户添加_MySQL用户添加
  5. Django讲课笔记09:使用QuerySet新增和更新数据
  6. n1怎么进入线刷模式_怎么用斐讯NI天天链刷机成电视机顶盒教程
  7. java寻宝题目,神都夜行录寻宝答题答案大全 挖宝答题答案汇总
  8. Linux 命令(113)—— seq 命令
  9. 推荐一款 ES 集群可视化工具:Cerebro,简单、实用!
  10. python matplotlib.pyplot报错tk_@邹博,python 中 import matplotlib.pyplot 会报Keyerror 'qt5' 的错...
  11. pdf转图片 jpg png
  12. java 日程安排_Java实现 LeetCode 731 我的日程安排表 II(二叉树)
  13. java 加水印_Java添加水印(图片水印,文字水印)
  14. 商标注册流程和周期是什么
  15. MySQL 统计各领域数量及其百分比
  16. Intellij IDEA 创建资源文件夹 source folder
  17. C# 将字符串(符合xml格式)与XML互转
  18. 干货!如何用Node.js实现一个精巧的P2P网络
  19. 程序员节的过节姿势大全
  20. 另一个jar包引不了_越是忘不了初恋的人,越是懂得如何去爱

热门文章

  1. Keil MDK下载程序时的相关设置
  2. 求解平稳分布matlab,计算二阶马尔可夫信源的熵
  3. java 获取服务器IP地址及MAC地址
  4. Npm安装node-sass包依赖时报错 Cannot download “https://github.com/sass/node-sass/releases/download
  5. Python中的zip函数
  6. MySQL中的datetime对应Java类型
  7. 在arm上运行x86动态库_苹果官宣:Arm取代英特尔
  8. vue 给标签添加data属性_在Vue中获取自定义属性方法:data-id的实例
  9. halcon测量两条线距离_三角测量算法:过滤可能的错误点
  10. 查看你所使用计算机的网卡信息,查看网卡信息命令