C++ string 常用函数总结
头文件:#include<string>
[注]:文中关于个数的参数文档中为 size_type 型,更本质是 size_t 型,因为typedef size_t size_type,而 size_t 在不同系统内实现不同,大概为 unsigned int 型,为简便起见,本文均写为 int 型。另外,string 的许多函数都有各种重载,本文所写的只是较常用的。
赋值
string类型的变量可以直接赋值:string str = "hello world"; //可以直接赋值
cout << str << endl; //string 不支持 C 语言,因此输出只能使用 cout 不能使用 printf
输出:
hello world
使用
string的构造函数来实现拷贝的效果:string substr = string(string str, int start, int num);
由此得到的
substr是截取字符串str从start起num个字符。关于子串还有函数
substr(int start, int num),其效果同上。举例如下:
//返回子字符串 substr
string str = "012345678";
string substr = str.substr(1,3);
cout << substr << endl; substr = string(str, 2, 5);
cout << substr << endl;
输出:
123
23456
长度
函数 string.size() 和 string.length() 均可返回本字符串长度,返回值类型为 int(size_t) 。
运算符
字符串连接 +
举例如下:
string str1 = "abc", str2 = "def";
str = str1 + str2;
cout << str << endl;
输出:
abcdef
字典序比较:
> < >= <= != ==
遍历/访问
使用下标
[]访问同字符数组。
使用迭代器访问
举例如下:
string str = "hello world"; //可以直接赋值
printf("按元素下标访问:%c %c\n", str[0], str[str.size()-1]);
//可以按照元素下标访问 //通过迭代器 iterator 访问 迭代器类似于指针
printf("迭代器访问str:\t");
for(string::iterator it = str.begin(); it != str.end(); ++it)
{
printf("%c ", *it);
}
printf("\n");
printf("str.begin() = #%c#", *str.begin()); //迭代器类似于指针 要加 *
printf("str.end() = #%c#", *str.end());输出:
按元素下标访问:h d
迭代器访问str: h e l l o w o r l d
str.begin() = #h#str.end() = # #
增删改查
插入
string.insert(int pos, string str)其作用为在字符串
string第pos个字符处插入字符串str。删除
string.erase(int pos, int len)其作用为从字符串
string第pos个字符处删除len个字符。清空字符串
string.clear()判断字符串是否为空
string.empty()举例如下:
string str = "hello world"; //插入
str.insert(0, "Start "); //在开头插入
cout << "开头插入:" << str << endl;
str.insert(str.size(), " End."); //在末尾插入
cout << "末尾插入:" << str << endl;
str.insert(6, "Middle "); //在中间插入
cout << "中间插入:" << str << endl; //删除
str.erase(0,1); //删除 从第 0 位开始的 1 个
cout << "删除第一个元素:" << str << endl;
str.erase(0, 2); //删除 从第 0 位开始的 2 个
cout << "删除前两个元素:" << str << endl;
cout << str.empty() << endl;
str.clear(); //清空
cout << str.empty() << endl;
输出:
开头插入:Start hello world
末尾插入:Start hello world End.
中间插入:Start Middle hello world End.
删除第一个元素:tart Middle hello world End.
删除前两个元素:rt Middle hello world End.
0
1
替换
string.replace(int pos, int len, string temp)其作用为替换
string字符串从pos起len个字符为 字符串temp。举例如下:string str = "123456";
string temp = "abc";
str.replace(0, 1, temp);
cout << str << endl;
输出为:
abc23456
查询
string.find()本函数用于在字符串
string中寻找字符或字符串,若找到则返回其第一个字符所在下标位置,若没有对应字符或字符串,则返回string.npos,即-1。举例如下:string str = "hello world"; int found = str.find("world");
if(found != str.npos) //npos = -1
{
printf("%d\n", found);
} found = str.find('l');
if(found != str.npos)
{
printf("%d\n", found);
} found = str.find('.');
if(found == str.npos)
printf("Not found!\n");
输出为:
6
2
Not found!
C++ string 常用函数总结的更多相关文章
- C++ string 常用函数
C++ String常用函数 一,类型别名 size_type 无符号整型 iterator 迭代器类型 const_iterator 只读迭代器 reverse_iterator 逆序迭代器 con ...
- C#string常用函数总结
补充: 1:在C语言里 char占1个字节 而在C#,Java里char占两个字节 数据库里char 中汉占两个字节 字母数字占一个字 2:string ...
- 【STL】string 常用函数
string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...
- 【转】string常用函数
原文地址:http://hi.baidu.com/baowup/blog/item/3a27465c86d71546faf2c066.html/cmtid/de1ef3f0de7554a0a40f52 ...
- String 类的实现(5)String常用函数
2 #include<iostream> 3 #include<stdio.h> 4 #include<assert.h> 5 #include <iom ...
- stl string常用函数
string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...
- C++中的string常用函数用法
标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而 ...
- c++标准库中的string常用函数总结《转》
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...
- STL string 常用函数(转)
string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...
- c++中的string常用函数用法总结!
标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作 ...
随机推荐
- 【转载】ASP.NET前台代码绑定
ASP.NET前台代码绑定后台变量方法总结http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html ASP.NET前台无法访问后台int ...
- 微信小程序入门教程之二:页面样式
这个系列的上一篇教程,教大家写了一个最简单的 Hello world 微信小程序. 但是,那只是一个裸页面,并不好看.今天接着往下讲,如何为这个页面添加样式,使它看上去更美观,教大家写出实际可以使用的 ...
- linux用户密码过期导致命令执行失败
背景介绍: 使用zabbix调用系统命令,检查时间同步,发现一直在报错,root 用户执行无异常,问题还是出现zabbix用户上面. [zabbix@test-10-12 ~]$ sudo ntpda ...
- AI换脸实战教学(FaceSwap的使用)---------第一步Extration:提取人脸。
市面上有多款AI换脸的方法,笔者这里节选了Github那年很火的开源项目FaceSwap: (很早就实践了,但是忘记记录啦hhh,请勿用于不正当用途哦) 做了一篇详细教学,包括配置,参数设置,换脸效果 ...
- AT2348 [ARC070D] HonestOrUnkind
不妨先从无解的情况下手,不难发现当 \(A \le B\) 时是一定无解的. 因为不诚实的 \(B\) 个人可以装作是诚实的,全部说自己这一方是诚实的对方是不诚实的我们就无法判断了. 下面我们就可以在 ...
- 分布式消息队列RocketMQ(一)安装与启动
分布式消息队列RocketMQ 一.RocketMQ简介 RocketMQ(火箭MQ) 出自于阿里,后开源给apache成为apache的顶级开源项目之一,顶住了淘宝10年的 双11压力 是电商产品的 ...
- Redis——(主从复制、哨兵模式、集群)的部署及搭建
Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...
- rpm与yum安装及管理程序
安装及管理程序 1.Linux应用程序基础 2.RPM软件包管理工具 3.yum源仓库创建 1.应用程序与系统命令的关系如图: 典型应用程序的目录结构如图: 常见的软件包封装类型如图: 2.RPM包 ...
- go基础——if语法
package main import "fmt" /* 条件语句:if 注意点: 1.if后的{,要与if条件写在同一行: 2.else要跟在}之后,不能另起一行: 3.if和e ...
- 问题描述:Navicat连不上MySQL数据库
发现Navicat连不上MySQL后我首先觉得是MySQL的服务没有打开, 然后再cmd里面 启动MySQL服务 输入: net start mysql 发现没有此服务,然我网上找了一下 先初始化My ...