STL string常用API
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std; //1. 字符串构造
/*
string();//创建一个空的字符串 例如: string str;
string(const string& str);//使用一个string对象初始化另一个string对象
string(const char* s);//使用字符串s初始化
string(int n, char c);//使用n个字符c初始化 */
void test01(){ string s1;
string s2(10, 'a');
string s3(s2);
string s4("hello wolrd!"); cout << s2 << endl;//aaaaaaaaaa
cout << s3 << endl;//aaaaaaaaaa
cout << s4 << endl;//hello wolrd!
} //2. string基本赋值操作
/*
string& operator=(const char* s);//char*类型字符串 赋值给当前的字符串
string& operator=(const string &s);//把字符串s赋给当前的字符串
string& operator=(char c);//字符赋值给当前的字符串
string& assign(const char *s);//把字符串s赋给当前的字符串
string& assign(const char *s, int n);//把字符串s的前n个字符赋给当前的字符串
string& assign(const string &s);//把字符串s赋给当前字符串
string& assign(int n, char c);//用n个字符c赋给当前字符串
string& assign(const string &s, int start, int n);//将s从start开始n个字符赋值给字符串
*/
void test02(){ string s1;
s1 = "hello world!";
cout << s1 << endl;//hello world! string s2;
//s2.assign(s1);
s2.assign("hello obama!");
cout << s2 << endl;//hello obama!
} //3. string存取字符操作
/*
char& operator[](int n);//通过[]方式取字符
char& at(int n);//通过at方法获取字符
*/
void test03(){ string s = "hello world!"; for (int i = 0; i < s.size(); i ++){
cout << s[i] << " ";
} cout << endl;
for (int i = 0; i < s.size(); i++){
cout << s.at(i) << " ";
}
cout << endl; //[]访问越界不抛异常,直接挂掉。at越界了,会抛出异常。 try{
//cout << s[100] << endl;
cout << s.at(100) << endl;
}
catch (out_of_range &ex){
cout << ex.what() << endl;
cout << "捕获异常!" << endl;
} } //4. string拼接操作
/*
string& operator+=(const string& str);//重载+=操作符
string& operator+=(const char* str);//重载+=操作符
string& operator+=(const char c);//重载+=操作符
string& append(const char *s);//把字符串s连接到当前字符串结尾
string& append(const char *s, int n);//把字符串s的前n个字符连接到当前字符串结尾
string& append(const string &s);//同operator+=()
string& append(const string &s, int pos, int n);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
string& append(int n, char c);//在当前字符串结尾添加n个字符c
*/
void test04(){ string s1 = "aaa";
s1 += "bbb";
s1 += 'c';
cout << s1 << endl; s1.append("ddddd",3);
cout << s1 << endl;//aaabbbcddd } //5. string查找和替换
/*
int find(const string& str, int pos = 0) const; //查找str第一次出现位置,从pos开始查找
int find(const char* s, int pos = 0) const; //查找s第一次出现位置,从pos开始查找
int find(const char* s, int pos, int n) const; //从pos位置查找s的前n个字符第一次位置
int find(const char c, int pos = 0) const; //查找字符c第一次出现位置
int rfind(const string& str, int pos = npos) const;//查找str最后一次位置,从pos开始查找
int rfind(const char* s, int pos = npos) const;//查找s最后一次出现位置,从pos开始查找
int rfind(const char* s, int pos, int n) const;//从pos查找s的前n个字符最后一次位置
int rfind(const char c, int pos = 0) const; //查找字符c最后一次出现位置
string& replace(int pos, int n, const string& str); //替换从pos开始n个字符为字符串str
string& replace(int pos, int n, const char* s); //替换从pos开始的n个字符为字符串s
*/
void test05(){
string s = "abcdefgd";
cout << "test05-1:"<< s.find('d') << endl;//4
cout << "test05-2:"<< s.rfind('d') << endl;//5 s.replace(2, 3, "AAA");
cout << "test05-3:"<<s << endl;//abAAAfgd
} //6. string比较操作
/*
int compare(const string &s) const;//与字符串s比较
int compare(const char *s) const;//与字符串s比较
*/
void test06(){
string s1 = "hello";
string s2 = "hello";
const char *str = "world"; if (s1.compare(s2) == 0){
cout << "s1 == s2!" << endl;
} if (s2.compare(str) == 0){
cout << "s1 == str!" << endl;
}
} //7. string子串
/*
string substr(int pos = 0, int n = npos) const;//返回由pos开始的n个字符组成的字符串
*/
void test07(){
string email = "hello world@gmail.com";
int pos = email.find('@');
string username = email.substr(0,pos);
cout << "test07-1:"<< username << endl;//hello world string prex = email.substr(pos + 1);
cout << "test07-2:"<< prex << endl;//gmail.com
} //8. string插入和删除操作
/*
string& insert(int pos, const char* s); //插入字符串
string& insert(int pos, const string& str); //插入字符串
string& insert(int pos, int n, char c);//在指定位置插入n个字符c
string& erase(int pos, int n = npos);//删除从Pos开始的n个字符
*/ void test08(){
string s = "aaaa";
s.insert(3, "AAAA");
cout << "test08-1:"<< s << endl;//aaaAAAAa
s.insert(3, 5, 'M');
cout << "test08-2:"<< s << endl;//aaaMMMMMAAAAa
s.erase(2, 3);
cout << "test08-3:"<< s << endl;//aaMMMAAAAa
} //9. string和c-style字符串转换
void test09(){ const char *str = "hello wolrd!";
//const char * -> string
string s(str); cout << str << endl; //string -> const char *
const char *s2 = s.c_str();
cout << s2 << endl; } //10. 字符串的内存被重新分配之后,可能发生错误.
void test10(){ //[]和at函数返回都是引用
string s = "abcde";
char &a = s[2];
char &b = s[3]; a = '1';
b = '2'; cout << "a:" << a << endl;
cout << "b:" << b << endl;
cout << s << endl;
cout << "字符串原空间地址:" << (int *)s.c_str() << endl; s = "123456789abcdefg";
cout << "字符串原空间地址:" << (int *)s.c_str() << endl; //字符串在字符串操作过程中,可能会导致重新分配内存,之前引用的内存就会失效。
a = '3';
} //11. 迭代器遍历字符串
void test11(){ string s = "hello world!";
for (string::iterator it = s.begin(); it != s.end(); ++it){
cout << *it << " ";
}
cout << endl; for (string::reverse_iterator it = s.rbegin(); it != s.rend(); ++it){
cout << *it << " ";
}
cout << endl;
}
int main(){ //test01();
//test02();
//test03();
test04();
//test05();
//test06();
test07();
test08();
test09();
//test10();
//test11();
return 0;
}
STL string常用API的更多相关文章
- String常用API
String常用API 1. 获取字符串长度 int length = str.length(); 2. 根据索引,返回字符串中对应的字符 char c = str.chaeAt(length-1); ...
- STL vector常用API
1.容器:序列容器(时间决定).关联式容器(容器中的数据有一定规则) 2.迭代器:通过迭代器寻找.遍历容器中的数据 vetor的使用:数据遍历与输出 #define _CRT_SECURE_NO_WA ...
- stl string常用函数
string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...
- STL string 常用函数(转)
string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...
- STL string常用操作指令
s.insert(pos,args); 在pos之前插入args指定的字符.pos可以是一个下标或一个迭代器.接受下标的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器. s. ...
- lua中string常用api
local a="abcdefgbbb" string.sub(a,1,3) 字符串截取 返回截取的字符串 print(string.sub(a,1,3)) ...
- kubernetes 客户端KubeClient使用及常用api
KubeClient是kubernetes 的C#语言客户端简单易用,KubeClient是.NET Core(目标netstandard1.4)的可扩展Kubernetes API客户端, gith ...
- String 字符串详解 / 常用API
String 详解 / 常用API 简介 String 是不可改变的字符串序列.String 为字符串常量 StringBuilder 与StringBuffer 均为可改变的字符串序列.为字符串变量 ...
- 常用API(Object、String、StringBuffer、用户登陆注册)
常用API 今日内容介绍 u Object u String u StringBuilder 第1章 Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象 ...
随机推荐
- NSIS检测到窗口最小化闪烁提示
#检测到窗口为最小化时闪烁提示 !include nsDialogs.nsh #编写:水晶石 Name "IsIconic Example" OutFile "IsIco ...
- 分布式存储系统之Ceph基础
Ceph基础概述 Ceph是一个对象式存储系统,所谓对象式存储是指它把每一个待管理的数据流(比如一个文件)切分成一到多个固定大小的对象数据,并以其为原子单元完成数据的存取:对象数据的底层存储服务由多个 ...
- 记Windows的一个存在了十多年的bug
bug Windows有一个bug,持续了十多年,从Windows Visita开始(2007年),一直存在,直到Windows11(2021年)才修复(其实也不叫修复,后面我再具体说),而Windo ...
- 🔥支持 Java 19 的轻量级应用开发框架,Solon v1.10.4 发布
Java 轻量级应用开发框架.可用来快速开发 Java 应用项目,主框架仅 0.1 MB. 相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 - 10 倍. (更快) ...
- JavaScript中通过按回车键进行数据的录入
1.代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- GitLab CI/CD 自动化部署入门
前言:因为找了B站内推,测试开发,正好知道内部使用GitLab做自动化测试,所以简单学了一下,有错误的地方请指正. 入门 初始化 cp: 无法获取'/root/node-v12.9.0-linux-x ...
- 齐博x1 APP要实现直播的关键两步
大家务必要注意,缺少这两步,你的APP将不能实现直播, 也即点击直播按钮无法启动直播推流
- Audacity开源音频处理软件使用入门
操作系统 :Windows10_x64 Audacity版本:3.2.1 Audacity是一款开源.免费.跨平台的音频处理及录音软件,支持Windows.macOS及Linux操作系统. 这里记录下 ...
- OpenMP 入门
OpenMP 入门 简介 OpenMP 一个非常易用的共享内存的并行编程框架,它提供了一些非常简单易用的API,让编程人员从复杂的并发编程当中释放出来,专注于具体功能的实现.openmp 主要是通过编 ...
- 基于JESD204B和PCIe DMA的多通道数据采集和回放系统
基于JESD204B和PCIe DMA的多通道数据采集和回放系统 在主机端PCIe驱动的控制和调度下,数据采集与回放系统可以同时完成对多个JESD204B接口AD数据的采集以及JESD204B接口DA ...