string 类简介和例程
一、标准库string类型
string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作 ,在VC中直接F1查看
template <
class CharType,
class Traits=char_traits<CharType>,
class Allocator=allocator<CharType>
>
class basic_string
typedef basic_string<char> string;
typedef basic_string<wchar_t> wstring;
要使用string类型对象,必须包含相关头文件
#include <string>
using std::string;
string对象的定义和初始化:
string s1; //默认构造函数,s1为空串
string s2(s1); //将s2初始化为s1的一个副本
string s3(“value”);
//将s3初始化为一个字符串字面值副本string s4(n, ‘c’);
//将s4初始化为字符‘c’的n个副本
常用成员函数:
例程1:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <string>
#include <iostream> using namespace std; int main(void) basic_string<char> s3("xxx"); // 等价于string s3("xxx"); string s4("abcdefg", 4); string s5(s2, 2, 3); string::iterator first = s2.begin() + 1; string s6(first, last); //[first, last) return 0; |
例程2:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <string>
#include <iostream> using namespace std; int main(void) cout << s1.substr(1, 2) << endl; string::size_type pos = s1.find('d', 1);//位置从0开始算起 pos = s1.rfind('d'); return 0; |
例程3:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <string>
#include <iostream> using namespace std; int main(void) s1 = "abcdefg"; string s2 = "xyzabc"; string s3 = "111"; cout << s2 << endl; |
例程4:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <string>
#include <iostream> using namespace std; void fun(char *str) int main(void) s1[1] = 'B'; cout << s1 << endl; const string s2 = "xyz"; string s3 = "111" + s1 + "222" ; //s3.c_str() return 0; |
例程5:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <string>
#include <iostream> using namespace std; int main() { string strinfo = " //*---Hello World!......------"; string strset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; string::size_type first = strinfo.find_first_of(strset); if(first == string::npos) cout << "not find any characters" << endl; string::size_type last = strinfo.find_last_of(strset); if(last == string::npos) cout << "not find any characters" << endl; cout << strinfo.substr(first, last - first + 1) << endl; return 0; } |
输出:Hello World
可以利用find_first_of 等操作去除空格,如去除左空格可以这样:
string s = " afas";
string drop = " \t";
s.erase(0, s.find_first_not_of(drop));
去除右空格:
string s = " dsfs ";
string drop = " \t";
s.erase(s.find_last_not_of(drop)+1);
参考:
C++ primer 第四版
Effective C++ 3rd
C++编程规范
string 类简介和例程的更多相关文章
- map 类简介和例程
一.标准库的map类型 使用map得包含map类所在的头文件 template < class Key, class Type, class Traits = less<Key>, ...
- vector 类简介和例程
一.标准库的vector类型 vector是同一种类型的对象的集合 vector的数据结构很像数组,能非常高效和方便地访问单个元素 vector是一个类模板(class template) vecto ...
- C++ string 类详解
字符串是存储在内存的连续字节中的一系列字符.C++ 处理字符串的方式有两种,一种来自 C 语言,常被称为 C-风格字符串,另一种是基于 string 类库的字符串处理方式.C 风格字符串的处理可以参考 ...
- Java基础篇(02):特殊的String类,和相关扩展API
本文源码:GitHub·点这里 || GitEE·点这里 一.String类简介 1.基础简介 字符串是一个特殊的数据类型,属于引用类型.String类在Java中使用关键字final修饰,所以这个类 ...
- C++标准模板库Stand Template Library(STL)简介与STL string类
参考<21天学通C++>第15和16章节,在对宏和模板学习之后,开启对C++实现的标准模板类STL进行简介,同时介绍简单的string类.虽然前面对于vector.deque.list等进 ...
- object类的equals方法简介 & String类重写equals方法
object类中equals方法源码如下所示 public boolean equals(Object obj) { return this == obj; } Object中的equals方法是直接 ...
- 【Java】整理关于java的String类,equals函数和比较操作符的区别
初学 Java 有段时间了,感觉似乎开始入了门,有了点儿感觉但是发现很多困惑和疑问而且均来自于最基础的知识折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟大家先来看看一段奇怪的程 ...
- Spring Security——核心类简介——获得登录用户的相关信息
核心类简介 目录 1.1 Authentication 1.2 SecurityContextHolder 1.3 AuthenticationManager和Authenti ...
- (转)C++——std::string类的引用计数
1.概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里 ...
随机推荐
- “请不要直接访问超全局$_GET数组”
下载了一个名为NetBeans的IDE开发PHP程序,当我输入常用的的$name = $_GET['name'];时却收到警告:请不要直接访问超全局$_GET数组 请改用某些过滤函数(例如filter ...
- linux里install命令和cp命令的区别
转:http://blog.yikuyiku.com/?p=2659 基本上,在Makefile里会用到install,其他地方会用cp命令. 它们完成同样的任务——拷贝文件,它们之间的区别主要如下: ...
- iTunes Connect App Video
系统要求: 系统升级为 OS X Yosemote 版本 10.10 (正式版已经发布更新) 录制工具: QuickTime Player 版本 10.4 (833) 操作流程: 1. 设备数据线连接 ...
- End of Life check fails with NullPointerException
Checks if the running version of JIRA is approaching, or has reached End of Life. Details Type: Bug ...
- 【docker】【mysql】docker安装mysql,阿里云docker镜像加速器,docker搜索查看远程仓库上的镜像,docker拉取镜像,查看本地所有镜像,查看容器的运行状况,查看容器的详细信息
在docker上安装mysql有两种方式 1.通过Dockerfile构建 2.直接在docker hub上拉取镜像安装 =================本篇采用方法2=============== ...
- iOS开发之UITextField 左侧设置小图标 leftview
设置用户登录的时候,这个是避免不了,实现方法很多,我个人主张,系统有提供就使用系统,一来方便,二来运行效率高 Paste_Image.png 实现代码如下: pwdTextField.placehol ...
- 轻量级java开发(一)-Hibernate 安装
1.从http://hibernate.org/orm/downloads/下载Hibernate 目前最新版是4.3.0.Final 支持JPA 2.1 support 2.解压下载的压缩文件,导 ...
- Android RadioButton设置选中时文字和背景颜色同时改变
主要应用在购物车,像淘宝的那样,点击以后弹出一个选择种类颜色这样的popuwindow以后,然后这个选择种类的地方要用到类似这个玩意儿. 搜了一下,效果和这个文章一致.转了. 原文地址:http:// ...
- dell 1464 升级固态硬盘ssd 记录
2010年买的Dell 1464(i5 M430)用了4年多,感觉这款机器各方面性能还不错,决定给它升升级.目前笔记本最大的瓶颈应该出在机械硬盘的速度上,于是撑着双十一促销之际买了一块PLEXTOR/ ...
- Django文档学习
文档位置:https://docs.djangoproject.com/zh-hans/2.1/