stl_string复习
#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复习的更多相关文章
- iOS总结_UI层自我复习总结
UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...
- vuex复习方案
这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.
- 我的操作系统复习——I/O控制和系统调用
上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...
- 复习(1)【Maven】
终于开始复习旧知识了,有输入必然要有输出.输入和输出之间的内化过程尤为重要,在复习的同时,真正把学到的东西积淀下来,加深理解. Maven项目概念与配置 Maven是一个项目管理和综合工具.Maven ...
- 《CSS权威指南》基础复习+查漏补缺
前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...
- JS复习--更新结束
js复习-01---03 一 JS简介 1,文档对象模型 2,浏览器对象模型 二 在HTML中使用JS 1,在html中使用<script></script>标签 2,引入外部 ...
- jQuery 复习
jQuery 复习 基础知识 1, window.onload $(function(){}); $(document).ready(function(){}); 只执行函数体重的最后一个方法,事 ...
- jQuery5~7章笔记 和 1~3章的复习笔记
JQery-05 对表单和表格的操作及其的应用 JQery-06 jQuery和ajax的应用 JQery-07 jQuery插件的使用和写法 JQery-01-03 复习 之前手写的笔记.实在懒得再 ...
- HTML和CSS的复习总结
HTML(Hypertext Markup Language)超文本标记语言:其核心就是各种标记!<html> HTML页面中的所有内容,都在该标签之内:它主要含<head>和 ...
随机推荐
- 快速排序 QuickSort (C++迭代,递归)
/* * QuickSort.h * 快速排序(将每一个元素转换为轴点元素) * Created on: 2020年2月12日 * Author: LuYonglei */ #ifndef SRC_Q ...
- 【 js 上传文件】
上传文件 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- Linux - Shell - find - 基础
概述 find 基础 背景 查找文件 人的记忆能力, 是有限的 计算机里的文件数量, 虽然不是无限, 但是也不少 要去找那些 记不清楚的文件, 必然要用查找 准备 OS centos7 用户 root ...
- ClassLoad
是什么 用来加载 Class 的.它负责将 Class 的字节码形式转换成内存形式的 Class 对象.字节码可以来自于磁盘文件 .class,也可以是 jar 包里的 .class,也可以来自远程服 ...
- ansible笔记(2):管理清单配置详解
前情提要:管理清单(Iventory)配置文件/etc/ansible/hosts.通过修改该配置文件以达到管理受控主机的目的. 在我的实验平台上有3台主机:192.168.232.181(an ...
- 转:unittest的几种运行方式
#unittest-test.py import unittestfrom demo import RunMainimport HtmlTestRunner class TestMethod(unit ...
- 每天进步一点点------Xilinx IP 内核
ISE 设计套件 11.1 版本中提供了众多全新的 IP 内核.数学函数:Multiply Adder v2.0 —— 执行两个操作数的乘法,并采用 XtremeDSP™ 解决方案切片将完全精确的乘积 ...
- Django的安装、使用详解、自动化测试应用以及程序打包
1.Django的安装 pip install Django 验证 Django 是否能被 Python 识别 >>> import django >>> prin ...
- 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二. 解决方 ...
- 刷题4. Median of Two Sorted Arrays
一.题目 Median of Two Sorted Arrays,具体请自行搜索. 这个题目,我看了一下,经过一番思考,我觉得实现起来不是很复杂. 但要做到bug free也不难,最大的问题是性能问题 ...