#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

void definition() //定义
{
string str(5,'a');
cout << str <<endl;
string str1("abcdefghijklmn");
cout << str1 <<endl;
string str2("123456789",3);
cout << str2 <<endl;
string str3("abcdefghijklmn",3,5);
cout << str3 <<endl;
}

void output(string str) //输出
{
cout << str << "\n" << str.c_str() << '\n' << str[3] << str.at(3) <<endl;

}

void attribute(string str) //属性
{
string str1("123");
cout << str1.capacity() << endl; //空间大小
str1.reserve(18); //重置空间大小
cout << str1.capacity() << endl;
cout << str.length() << endl; //字符串长度
cout << str.size() << endl; //字符串大小
str.resize(8); //重置字符串大小
cout << str << endl;
}

void modification(string str) //修改
{
string str1="123456";
char c1='!';
char c[]="wzr";

//中间插入
str.insert(3,str1);
cout << str << endl;
//str.insert(3,str1,3,2);
str.insert(3,c,3);
cout << str << endl;
str.insert(3,2,c1);
cout << str << endl;
//str+=str1;

//尾部插入
str.append(str1);
cout << str << endl;
//str.append(c);
//str.append(str1,3,2);
//str.append(c,2);
//str.append(2,c1);

//重新赋值
str.assign(str1);
cout << str << endl;
//str.assign(c);
//str.assign(str1,2,3);//从下标为2赋值三个
//str.assign(c,2);
//str.assign(3,c1);
//str[3]='@';
//cin >> str[4];

//删除
str.erase(2,3);
cout << str << endl;
str.erase(3);
cout << str << endl;
}

void compare(string str) //比较
{
string str2=("abcdeff");
cout << str.compare(str2) << endl;
cout << (str>str2) << endl;
}

void operation(string str) //操作
{
char c1[8]="0";
str.copy(c1,3,2); //从3开始复制两个 2的位置必须小于数组长度
cout << c1 << endl;
string str3="bcd";

cout << str.find(str3,3) << endl; //从下标[3]开始查找 找不到就返回起始位置
cout << (int)str.find(str3,3) << endl; //str3也可以是字符串,字符

cout << str.substr(3,2) << endl; //返回指定位置的子串下标[3]的2个
str.swap(str3); //交换
cout << str << '\n' << str3 << endl;

}
//运算符重载
void _iterator(string str) //string重新申请空间时迭代器会失效(扩大空间时ite会释放)
{

string::iterator ite;
ite=str.begin();

for(ite;ite!=str.end();ite++)
{
cout << *ite << endl;
//cin >> *ite;
}
//cout << ite[2] << endl;
//for(size_t i=0;i<str.size();i++)//size为无符号整型
//{
// cout << ite[i] << endl;
//}
//str.append(18,'h');
//ite[3]='w'; //失效
str.append(18,'i');
ite=str.begin();
ite[11]='w';
cout << str << endl;

}

void useiterator(string str)
{
string str4="qwer";
string::iterator ite=str4.begin();
//str.append(str4.begin(),str4.begin()+4);
//str.append(ite.start(),ite.end()); 错误
//str.erase(3,2);
//str.erase(str.begin()+2,3); //str.begin()可以看作0
str.insert(str.begin()+3,str4.begin(),str4.end());
cout << str << endl;
}

void fun(char c) //c为string元素(原型)的类型 不是 char *
{
cout << c;
}
void _algorithm(string str)
{
for_each(str.begin(),str.end(),fun);
//遍历每一个(开始,结尾,行为);
cout << endl;
sort(str.begin(),str.end(),greater<char>());
cout << str << endl;
sort(str.begin(),str.end(),less<char>());
for_each(str.begin(),str.end(),fun);
}

int main()
{
string str("abcdefg");
//definition(); //定义
//output(str); //输出
//attribute(str); //属性
//modification(str); //修改
//compare(str);
//operation(str); //操作
//_iterator(str);
//useiterator(str); //使用迭代器
//_algorithm(str); //算法
return 0;
}

stl_string复习的更多相关文章

  1. iOS总结_UI层自我复习总结

    UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...

  2. vuex复习方案

    这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.

  3. 我的操作系统复习——I/O控制和系统调用

    上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...

  4. 复习(1)【Maven】

    终于开始复习旧知识了,有输入必然要有输出.输入和输出之间的内化过程尤为重要,在复习的同时,真正把学到的东西积淀下来,加深理解. Maven项目概念与配置 Maven是一个项目管理和综合工具.Maven ...

  5. 《CSS权威指南》基础复习+查漏补缺

    前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...

  6. JS复习--更新结束

    js复习-01---03 一 JS简介 1,文档对象模型 2,浏览器对象模型 二 在HTML中使用JS 1,在html中使用<script></script>标签 2,引入外部 ...

  7. jQuery 复习

    jQuery 复习 基础知识 1, window.onload $(function(){});   $(document).ready(function(){}); 只执行函数体重的最后一个方法,事 ...

  8. jQuery5~7章笔记 和 1~3章的复习笔记

    JQery-05 对表单和表格的操作及其的应用 JQery-06 jQuery和ajax的应用 JQery-07 jQuery插件的使用和写法 JQery-01-03 复习 之前手写的笔记.实在懒得再 ...

  9. HTML和CSS的复习总结

    HTML(Hypertext Markup Language)超文本标记语言:其核心就是各种标记!<html> HTML页面中的所有内容,都在该标签之内:它主要含<head>和 ...

随机推荐

  1. 快速排序 QuickSort (C++迭代,递归)

    /* * QuickSort.h * 快速排序(将每一个元素转换为轴点元素) * Created on: 2020年2月12日 * Author: LuYonglei */ #ifndef SRC_Q ...

  2. 【 js 上传文件】

    上传文件 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  3. Linux - Shell - find - 基础

    概述 find 基础 背景 查找文件 人的记忆能力, 是有限的 计算机里的文件数量, 虽然不是无限, 但是也不少 要去找那些 记不清楚的文件, 必然要用查找 准备 OS centos7 用户 root ...

  4. ClassLoad

    是什么 用来加载 Class 的.它负责将 Class 的字节码形式转换成内存形式的 Class 对象.字节码可以来自于磁盘文件 .class,也可以是 jar 包里的 .class,也可以来自远程服 ...

  5. ansible笔记(2):管理清单配置详解

    前情提要:管理清单(Iventory)配置文件/etc/ansible/hosts.通过修改该配置文件以达到管理受控主机的目的.    在我的实验平台上有3台主机:192.168.232.181(an ...

  6. 转:unittest的几种运行方式

    #unittest-test.py import unittestfrom demo import RunMainimport HtmlTestRunner class TestMethod(unit ...

  7. 每天进步一点点------Xilinx IP 内核

    ISE 设计套件 11.1 版本中提供了众多全新的 IP 内核.数学函数:Multiply Adder v2.0 —— 执行两个操作数的乘法,并采用 XtremeDSP™ 解决方案切片将完全精确的乘积 ...

  8. Django的安装、使用详解、自动化测试应用以及程序打包

    1.Django的安装 pip install Django 验证 Django 是否能被 Python 识别 >>> import django >>> prin ...

  9. Python出现Could not find a version that satisfies the requirement openpyxl (from versions: )

    一.环境使用python3.7时,用pip安装openpyxl出现如下错误: 系统环境:windows10家庭版Python版本:python3.7.1IDE:sublime_text 3二. 解决方 ...

  10. 刷题4. Median of Two Sorted Arrays

    一.题目 Median of Two Sorted Arrays,具体请自行搜索. 这个题目,我看了一下,经过一番思考,我觉得实现起来不是很复杂. 但要做到bug free也不难,最大的问题是性能问题 ...