STL基础--String
String
构造
string s1("Hello");
string s2("Hello", 3); //s2: Hel
string s3(s1, 2); //s3: llo
string s4(s1, 2, 2); //s4: ll
string s5(5, 'a'); //s5: aaaaa
string s6({'a', 'b', 'c'}); //s6: abc
大小
s1="Goodbye"
s1.size(), s1.length() //7
s1.capacity();
s1.reserve(100);
s1.reserve(5); //s1: Goodbye, sizs()==7,capacity()>=7 不改变内容和size,只改变容量
s1.shrink_to_fit(); //改变容量到承载内容
s1.resize(9); //s1: Goodbye\0\0
s1.resize(12, 'x'); //s1: Goodbye\0\0xxx
s1.resize(3); //s1: Goo
单元素访问
s1.at()会检查元素是否存在
s1[]不会检查
front, back, push_back, pop_back, begin, end
范围访问
string s2 = "Dragon Land";
s1.assign(s2); // s1 = s2;
s1.assign(s2, 2, 4); // s1: ago
s1.assign("Wisdom");
s1.assign("Wisdom", 3); // s1: Wis
s1.assign(s2, 3); // Error
s1.assign(3, 'x'); // s1: xxx
s1.assign({'a', 'b', 'c'}); // s1: abc
s1.append(" def"); // s1: abc def
s1.insert(2, "mountain", 4); // s1: abmounc def
s1.replace(2, 5, s2, 3, 3); // s1: abgon def
s1.erase(1, 4); // s1: a def
s2.substr(2, 4); // agon
s1 = "abc";
s1.c_str(); // "abc\0"
s1.data(); // "abc" c++11中结尾也有\0
s1.swap(s2);
成员函数算法
s1 = "abcdefg";
char buf[20];
size_t len = s1.copy(buf, 3); // buf:abc len == 3
len = s1.copy(buf, 4, 2); // buf:cdef len == 4
s1 = "If a job is worth doing, it's worth doing well";
size_t found = s1.find("doing"); // found == 18
found = s1.find("doing", 20); // found == 36
found = s1.find("doing well", 0); // found == 36
found = s1.find("doing well", 0, 5); // found == 18
found = s1.find_first_of("doing"); // found == 6
found = s1.find_first_of("doing", 10); // found == 13
found = s1.find_first_of("doing", 10, 1); // found == 18
found = s1.find_last_of("doing"); // found == 40
found = s1.find_first_not_of("doing"); // found == 0
found = s1.find_last_not_of("doing"); // found == 45
s1.compare(s2);
if (s1 > s2) {} //当size很大时,expensive
s1.compare(3, 2, s2);
string ss = s1 + s2; //当size很大时,expensive
非成员函数
cout << s1 << endl;
cin >> s1;
getline(cin, s1); //'\n'
getline(cin, s1, ';'); //';'
//数字转成string
s1 = to_string(8);
s1 = to_string(2.3e7); // s1: 23000000.000000
s1 = to_string(0xa4); // s1: 164
s1 = to_string(034); // s1: 28
//string转数字
s1 = "190";
int i = stoi(s1); //i == 190
s1 = "190 monkey";
size_t pos;
int i = stoi(s1, &pos); //i == 190 pos == 3
s1 = "a monkey";
int i = stoi(s1, &pos); // exception of invalid_argument
int i = stoi(s1, &pos, 16); // i == 10
//stol, stod, stof, etc 以上函数只做简单string转换
//复杂格式使用stringstream
//lexical_cast() //简单string转换
string和算法
s1 = "Variety is the spice of life.";
int num = count(s1.begin(), s1.end(), 'e'); //4
num = count_if(s1.begin(), s1.end(), [](char c) {return (c <= 'e' && c >= 'a');}); //6
s1 = "Goodness is better than beauty.";
string::iterator itr = search_n(s1.begin(), s1.begin()+20, 2, 's'); // itr -> first 's'
s1.erase(itr, itr+5); //ss is
s1.insert(itr, 3, 'x'); //Goodnexxxss
s1.replace(itr, itr+3, 3, 'y'); //Goodneyyyis replace substring
is_permutation(s1.begin(), s1.end(), s2.begin()); //检查s1是否是s2的排列
replace(s1.begin(), s1.end(), 'e', ''); //replace characters
transform(s1.begin(), s1.end(), s2.begin(),
[](char c) {
if (c < 'n')
return 'a';
else
return 'z';
});
s1 = "abcdefg";
rotate(s1.begin(), s1.begin()+3, s1.end()); //s1: defgabc
u16string s9; //string char16_t
u32string s8; //string char32_t
wstring s0; //string wchar_t
to_wstring();
STL基础--String的更多相关文章
- c++中级 STL基础学习(二)
deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插 ...
- Java基础String的方法
Java基础String的方法 字符串类型写法格式如下: 格式一: String 变量名称; 变量名称=赋值(自定义或传入的变量值); 格式二: String 变量名称=赋值(自定义或传入的变量值); ...
- Java基础 String 裸暴力算法- 五个小练习
之间的博客,承上启下: Java基础 String/StringBuff 常用操作方法复习/内存分析 Java数组直接选择排序.sort()排序 Java基础 String 算法 - 五个练 ...
- Java基础—String构造方法
Java基础--String构造方法 public String(): 创建一个空表字符串对象,不包含任何内容 public String(char[]chs): 根据字符数组的内容,来创建字符串对象 ...
- 十四、Java基础---------String、StringBuffer、StringBuilder基本应用
在前面的博客中曾提及Java的数据类型分为基本数据类型,和引用数据类型,而String便是最常见的应用数据类型,本文将着重介绍这一引用数据类型的用法. String 字符串 String类是对 ...
- STL的string和wstring
STL有字符串处理类——stirng和wstring,但是用的时候会觉得不是很方便,因为它不能像TCHAR一样根据定义的宏在char类型字符串和wchar_t进行转换,总不能因为程序要Unicode就 ...
- Java基础-String、StringBuffer、StringBuilder
看下面这段代码: public class Main { public static void main(String[] args) { String string = ""; ...
- C++之STL之string
/*C 语言中字符数组一般会采用char str[]来存放,但是显得会比较麻烦,C++在stl中加入了string类型,对字符串常用的功能进行了封装,操作起来比较方便*/#include<cst ...
- POJ 3096 Surprising Strings(STL map string set vector)
题目:http://poj.org/problem?id=3096 题意:给定一个字符串S,从中找出所有有两个字符组成的子串,每当组成子串的字符之间隔着n字符时,如果没有相同的子串出现,则输出 &qu ...
随机推荐
- 【集成学习】sklearn中xgboost模块的XGBClassifier函数
# 常规参数 booster gbtree 树模型做为基分类器(默认) gbliner 线性模型做为基分类器 silent silent=0时,不输出中间过程(默认) silent=1时,输出中间过程 ...
- python2.7.9安装mysql-python模块
我使用的系统版本是: SLES12-sp2 使用python连接Mysql数据库,需要安装mysql-python模块: 1. 首先安装pip: 从python官方网站下载get-pipe.py,执行 ...
- [LeetCode&Python] Problem 401. Binary Watch
A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom ...
- 20155219实验四 Android开发基础设计实验报告
20155219实验四 Android开发基础设计实验报告 实验内容 安装Andriod Studio并配置软件 使用Andriod Studio软件实现Hello World!+学号的小程序 实验步 ...
- Java设计模式(二)
3.设计模式分类 通常来说设计模式分为三大类,共23种: 1.工厂模式 工厂模式(Factory Pattern)的意义就跟它的名字一样,在面向对象程序设计中,工厂通常是一个用来创建其他对象的对象 ...
- P2261 [CQOI2007]余数求和 (数论)
题目链接:传送门 题目: 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod + k mod + k mod + … + k mod n的值,其中k mod i表示k ...
- apache用户认证、域名跳转、Apache访问日志(两种格式)
1.apache 设置,用户访问时 目录或文件的认证: 对目录的认证: <Directory /var/www/222> //指定认证的目录AllowOverride AuthConfig ...
- L3-019 代码排版 (30 分)
某编程大赛中设计有一个挑战环节,选手可以查看其他选手的代码,发现错误后,提交一组测试数据将对手挑落马下.为了减小被挑战的几率,有些选手会故意将代码写得很难看懂,比如把所有回车去掉,提交所有内容都在一行 ...
- Java中的包学习笔记
一.总结 1.引入包的概念的原因和包的作用比如有多个人开发一个大型程序,A定义了一个Math.java类,B也定义了一个Math.java类,它们放在不同目录,使用的时候也是用目录来区分,包实际上就是 ...
- js语言中的新发现和一些总结
js中定义变量加var和不加var的区别 原创 2016年09月01日 10:17:33 标签: js 3658 这个问题其实我在面试的时候有被问到过,当时我记得我回答的很模糊,面试官看到我好像不太清 ...