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的更多相关文章

  1. c++中级 STL基础学习(二)

    deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插 ...

  2. Java基础String的方法

    Java基础String的方法 字符串类型写法格式如下: 格式一: String 变量名称; 变量名称=赋值(自定义或传入的变量值); 格式二: String 变量名称=赋值(自定义或传入的变量值); ...

  3. Java基础 String 裸暴力算法- 五个小练习

      之间的博客,承上启下:    Java基础 String/StringBuff 常用操作方法复习/内存分析 Java数组直接选择排序.sort()排序 Java基础 String 算法 - 五个练 ...

  4. Java基础—String构造方法

    Java基础--String构造方法 public String(): 创建一个空表字符串对象,不包含任何内容 public String(char[]chs): 根据字符数组的内容,来创建字符串对象 ...

  5. 十四、Java基础---------String、StringBuffer、StringBuilder基本应用

    在前面的博客中曾提及Java的数据类型分为基本数据类型,和引用数据类型,而String便是最常见的应用数据类型,本文将着重介绍这一引用数据类型的用法. String 字符串     String类是对 ...

  6. STL的string和wstring

    STL有字符串处理类——stirng和wstring,但是用的时候会觉得不是很方便,因为它不能像TCHAR一样根据定义的宏在char类型字符串和wchar_t进行转换,总不能因为程序要Unicode就 ...

  7. Java基础-String、StringBuffer、StringBuilder

    看下面这段代码: public class Main { public static void main(String[] args) { String string = ""; ...

  8. C++之STL之string

    /*C 语言中字符数组一般会采用char str[]来存放,但是显得会比较麻烦,C++在stl中加入了string类型,对字符串常用的功能进行了封装,操作起来比较方便*/#include<cst ...

  9. POJ 3096 Surprising Strings(STL map string set vector)

    题目:http://poj.org/problem?id=3096 题意:给定一个字符串S,从中找出所有有两个字符组成的子串,每当组成子串的字符之间隔着n字符时,如果没有相同的子串出现,则输出 &qu ...

随机推荐

  1. 关于Adaboost——样本抽样的权值的实际意义

    看这篇文章的前提:已经看了PRML中的Adaboost的算法流程 看懂下面的内容必须牢牢记住:Adaboost使用的误差函数是指数误差 文章主要目的:理解样本抽样的权值是为什么那样变化的. 得出的结论 ...

  2. 重绘和回流(reflow和repaint)

    由于DOM操作会导致浏览器的回流,回流需要花费大量的时间进行样式计算和节点重绘与渲染,所以应当尽量减少回流次数. 以下是几种常见的减少重绘和回流的方法: 一.不要一项一项的更改页面的样式,尽量一口气写 ...

  3. vmware NAT 网络出现问题的解决方法

    nat 网络的配制: 用nat网络相对来说,以后网段出现改变,都不会有大的影响,方便以后做实验. 用dhclient 来获取IP dhclent -r 是用来关闭获取IP的. 自动获取IP,也可以改成 ...

  4. HDU1272小希的迷宫–并查集

    上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...

  5. oracle 数据库中(创建、解锁、授权、删除)用户

    上文我们已经建立了名为orcl66的数据库. 想要在数据库中创建.修改用户需要我们以管理员权限登录到数据库中. 首先我们通过sqlplus命令登录连接数据库. 输入sqlplus命令--用户名: sy ...

  6. JSP中页面向Action传递参数的几种方式

    <form name="ThisForm" method="POST" action="index.jsp"> form是表单, ...

  7. CodeChef KILLKTH Killjee and k-th letter

    题意 dt { font-weight: bold; margin-top: 20px; padding-left: 35px; } dd { box-shadow: 3px 3px 6px #888 ...

  8. UVA10294 Arif in Dhaka (First Love Part 2)

    题意 PDF 分析 用n颗宝石串成项链和手镯, 每颗宝石的颜色可以t种颜色中的一种,当A类项链经过旋转得B类项链时,A和B属于一类项链, 而手镯不仅可以旋转还可以翻转,当A类手镯经过翻转得得到B类手镯 ...

  9. 01python简介

    目录 1.  Python起源 2.  解释器 3.  Python 的设计目标 4.  Python 的设计哲学 5.  为什么选择  Python ? 6.  Python 特点 7.  Pyth ...

  10. ~ # himm -sh: himm: not found的解决方法

    ls /bin发现没有himm 海思根文件默认没有把himm工具集成在bin里,但是在sdk中 /home/swann/Hi3516CV300_SDK_V1.0.3.0/osdrv/tools/boa ...