之前大概的说了一下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. UVA140 Bandwidth带宽
  2. github的一些简单用法
  3. python数据类型汇总_python基础数据类型汇总
  4. AI如何提升10倍筛药效率?6月18日华为云携手中科院上海药物所揭开谜底
  5. Log4j和Slf4j的比较
  6. centos7 kvm虚拟机安装黑屏
  7. 使用PYTHON列表生成式过滤数据
  8. Atitti 类库 开发者 常用 api 目录 1.1. Meta anno注解元数据api 1 1.2. Ref 反射api 1 1.3. Database meta api 1 1.4.
  9. 关于coutends你不知道的那些事
  10. Java+MySQL基于ssm的大学生心理健康教育管理系统
  11. Web前端-Ajax-01
  12. 二阶段面试题——JavaScript
  13. Mysql高级查询语句练习
  14. coreseek-4.1-win32版本下windows安装记录
  15. GeekOS操作系统Project4
  16. 【C语言】三级指针烧脑题
  17. 如何加快Mac启动时间?Mac启动缓慢问题如何解决?
  18. 宝塔php原理,宝塔php建站教程
  19. mysql where or and_mysql where语句中 or 和 and连用注意点
  20. 【华为机试真题 C++】奥运会排行榜-100

热门文章

  1. Quadtrees UVA - 297
  2. strchr和strstr函数
  3. oracle ogg 12c mysql_Oracle GoldenGate 下载
  4. java反射获取包下所有的类
  5. Python 报错TypeError: expected string or bytes-like object
  6. 线程池-ThreadPoolExecutor
  7. java break 在if 中使用_Java | 使用JNA在Java中实现cls(cmd清屏)功能
  8. 半导体八大工艺流程图_大国重器,国芯基石 半导体离子注入机行业研究报告...
  9. linux下和htm的运行,嵌入式LINUX下CGI与HTML网页之间的通信
  10. python sys模块详解_python之sys模块详解