String

构造

  1. string s1("Hello");
  2. string s2("Hello", 3); //s2: Hel
  3. string s3(s1, 2); //s3: llo
  4. string s4(s1, 2, 2); //s4: ll
  5. string s5(5, 'a'); //s5: aaaaa
  6. string s6({'a', 'b', 'c'}); //s6: abc

大小

  1. s1="Goodbye"
  2. s1.size(), s1.length() //7
  3. s1.capacity();
  4. s1.reserve(100);
  5. s1.reserve(5); //s1: Goodbye, sizs()==7,capacity()>=7 不改变内容和size,只改变容量
  6. s1.shrink_to_fit(); //改变容量到承载内容
  7. s1.resize(9); //s1: Goodbye\0\0
  8. s1.resize(12, 'x'); //s1: Goodbye\0\0xxx
  9. s1.resize(3); //s1: Goo

单元素访问

  1. s1.at()会检查元素是否存在
  2. s1[]不会检查
  3. front, back, push_back, pop_back, begin, end

范围访问

  1. string s2 = "Dragon Land";
  2. s1.assign(s2); // s1 = s2;
  3. s1.assign(s2, 2, 4); // s1: ago
  4. s1.assign("Wisdom");
  5. s1.assign("Wisdom", 3); // s1: Wis
  6. s1.assign(s2, 3); // Error
  7. s1.assign(3, 'x'); // s1: xxx
  8. s1.assign({'a', 'b', 'c'}); // s1: abc
  9. s1.append(" def"); // s1: abc def
  10. s1.insert(2, "mountain", 4); // s1: abmounc def
  11. s1.replace(2, 5, s2, 3, 3); // s1: abgon def
  12. s1.erase(1, 4); // s1: a def
  13. s2.substr(2, 4); // agon
  14. s1 = "abc";
  15. s1.c_str(); // "abc\0"
  16. s1.data(); // "abc" c++11中结尾也有\0
  17. s1.swap(s2);

成员函数算法

  1. s1 = "abcdefg";
  2. char buf[20];
  3. size_t len = s1.copy(buf, 3); // buf:abc len == 3
  4. len = s1.copy(buf, 4, 2); // buf:cdef len == 4
  5. s1 = "If a job is worth doing, it's worth doing well";
  6. size_t found = s1.find("doing"); // found == 18
  7. found = s1.find("doing", 20); // found == 36
  8. found = s1.find("doing well", 0); // found == 36
  9. found = s1.find("doing well", 0, 5); // found == 18
  10. found = s1.find_first_of("doing"); // found == 6
  11. found = s1.find_first_of("doing", 10); // found == 13
  12. found = s1.find_first_of("doing", 10, 1); // found == 18
  13. found = s1.find_last_of("doing"); // found == 40
  14. found = s1.find_first_not_of("doing"); // found == 0
  15. found = s1.find_last_not_of("doing"); // found == 45
  16. s1.compare(s2);
  17. if (s1 > s2) {} //当size很大时,expensive
  18. s1.compare(3, 2, s2);
  19. string ss = s1 + s2; //当size很大时,expensive

非成员函数

  1. cout << s1 << endl;
  2. cin >> s1;
  3. getline(cin, s1); //'\n'
  4. getline(cin, s1, ';'); //';'
  5. //数字转成string
  6. s1 = to_string(8);
  7. s1 = to_string(2.3e7); // s1: 23000000.000000
  8. s1 = to_string(0xa4); // s1: 164
  9. s1 = to_string(034); // s1: 28
  10. //string转数字
  11. s1 = "190";
  12. int i = stoi(s1); //i == 190
  13. s1 = "190 monkey";
  14. size_t pos;
  15. int i = stoi(s1, &pos); //i == 190 pos == 3
  16. s1 = "a monkey";
  17. int i = stoi(s1, &pos); // exception of invalid_argument
  18. int i = stoi(s1, &pos, 16); // i == 10
  19. //stol, stod, stof, etc 以上函数只做简单string转换
  20. //复杂格式使用stringstream
  21. //lexical_cast() //简单string转换

string和算法

  1. s1 = "Variety is the spice of life.";
  2. int num = count(s1.begin(), s1.end(), 'e'); //4
  3. num = count_if(s1.begin(), s1.end(), [](char c) {return (c <= 'e' && c >= 'a');}); //6
  4. s1 = "Goodness is better than beauty.";
  5. string::iterator itr = search_n(s1.begin(), s1.begin()+20, 2, 's'); // itr -> first 's'
  6. s1.erase(itr, itr+5); //ss is
  7. s1.insert(itr, 3, 'x'); //Goodnexxxss
  8. s1.replace(itr, itr+3, 3, 'y'); //Goodneyyyis replace substring
  9. is_permutation(s1.begin(), s1.end(), s2.begin()); //检查s1是否是s2的排列
  10. replace(s1.begin(), s1.end(), 'e', ''); //replace characters
  11. transform(s1.begin(), s1.end(), s2.begin(),
  12. [](char c) {
  13. if (c < 'n')
  14. return 'a';
  15. else
  16. return 'z';
  17. });
  18. s1 = "abcdefg";
  19. rotate(s1.begin(), s1.begin()+3, s1.end()); //s1: defgabc
  20. u16string s9; //string char16_t
  21. u32string s8; //string char32_t
  22. wstring s0; //string wchar_t
  23. 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. react查缺补漏01

    1.描述对react理解? react是一个用于构建用户界面的JS库. react主要用于构建UI.很多人认为 React 是 MVC 中的 V(视图). react起源于:Facebook的内部项目 ...

  2. 软工实践第二次作业—Wordcount

    Git仓库地址:https://github.com/cwabc/PersonProject-C 一.问题描述 输入一个txt文件名,以命令行参数传入,程序能够统计txt文件中的以下几个指标: 统计文 ...

  3. SQL-数据库操作-002

    数据库的创建:create database data_name on primary ( name=data_1, filename='D\Data\data_name.mdf', size=50m ...

  4. 10 HashMap,Map.Entry,LinkedHashMap,TreeMap,Hashtable,Collections类

    Map集合的功能概述 添加功能 * V put(K key,V value):添加元素.            * 如果键是第一次存储,就直接存储元素,返回null            * 如果键不 ...

  5. YIT-CTF—密码学

    一.哼哼 小猪生活的地方在哪里? 看题目联想到是猪圈加密 二.卢本伟 LOL我只服五五开 ๑乛◡乛๑babbababaababbababaaababaaaaaaabaaa 更具提示“五五开”,再看到这 ...

  6. STM32F4的sct文件理解

    原文地址http://blog.sina.com.cn/s/blog_898f36590100ya2l.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  7. 【mybatis源码学习】mybatis和spring框架整合,我们依赖的mapper的接口真相

    转载至:https://www.cnblogs.com/jpfss/p/7799806.html Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注 ...

  8. day05 Spring中自定义注解的用处-之获取自定义的Servie

    PS: 在RPC远程调用中,想要获取自定义的service的方法,就得自定义标签遍历拿到方法 PS:在spring中,两个最核心的 概念是aop和ioc,aop其实就是动态代理. ioc 就是解决对象 ...

  9. mysql中文编码问题

    我比较推荐的方法是在创建数据库时便设置中文编码 create database bp default character set utf8; #注意是utf8不是utf-8 以下方法只适用于mysql ...

  10. MySQL 8.0支持DDL原子化

    在MySQL 5.5/5.6/5.7版本中,DDL操作是非原子型操作,在执行过程中遇到实例故障重启,可能导致DDL没有完成也没有回滚.如 1.执行DROP TABLE T1,T2操作,实例重启恢复后, ...