当前位置: 首页 > news >正文

怎么查百度收录网站网站建设代码生成器

怎么查百度收录网站,网站建设代码生成器,外贸网站支付接口,校园大型活动策划方案string string其实不属于STL,而是属于C标准库,这是历史原因。 使用string类需要包string头文件 文档介绍 string - C Reference (cplusplus.com) 构造函数 string() 默认构造,构造一个空的string类对象,即空字符串 string(const string& str) 拷…

string

string其实不属于STL,而是属于C++标准库,这是历史原因。

使用string类需要包string头文件

文档介绍 string - C++ Reference (cplusplus.com)

构造函数

在这里插入图片描述

string() 默认构造,构造一个空的string类对象,即空字符串
string(const string& str) 拷贝构造
string(const char s)* 用C-string 字符串构造 string 类对象

常用接口

遍历

//重载 operator[] 使得string像数组一样访问
char& operator[] (size_t pos);
const char& operator[] (size_t pos) const;

返回string字符串的字节个数(就是字符数)
size_t size() const;

  1. string str("hello world");
    for(int i = 0;i < str.size();i++){cout << str[i] << " ";
    }
    
  2. 迭代器 iterator

    • STL普遍提供了iterator对象的接口,比如string的begin和end函数,可以返回string对象的第一个位置和最后一个位置下一个位置的迭代器。

    • iterator begin();

    • iterator end();

    • string str("hello world");
      string::iterator it = str.begin();
      while(it != str.end()){cout << *it << " ";++it;
      }
      
    • 迭代器不是指针,但是和指针很类似,*it是运算符重载的结果。

    • 迭代器it可以改变string本身内容

  3. 范围for

    • string str("hello world");
      for(auto ch : s){cout << ch << " ";
      }
      
    • auto 自动推导类型

    • 实际上底层是迭代器

    • 范围for 取到的ch只是拷贝,写成auto是不能修改string本身内容的

    • 使用auto&就可以改变string本身内容了

        string str("hello world");for(auto& ch : s){cout << ch << " ";} 
      

迭代器类型

iterator 				正向迭代器
reverse_iterator 		反向迭代器
const_iterator 			常限定正向迭代器
const_reverse_iterator 	常限定反向迭代器

string容量操作接口

size_t size() const;
size_t capacity() const;
bool empty() const; 		//判空
void clear();				//清除有效字符,size置零,capacity不变,不会缩容
void reserve(size_t n = 0);

reserve介绍

reserve是储存的意思,对于string这样动态的数据结构,频繁的扩容会有很多消耗(异地扩,释放,拷贝),因此如果一开始就知道初始时有多少空间,直接就给好空间,效率就会提高很多。

string s1;
s1.reserve(100);

注意:当参数n大于当前capacity时毫无疑问会扩容,但是当n小于capacity时,是否会缩容其实是不确定的,由不同的编译器来决定,比如vs下不会缩容,但是g++下会缩容。

要注意的是reserve的行为不会对size以及字符串内容造成影响。

练习:415. 字符串相加 - 力扣(LeetCode)


增删查改接口

尾插

void push_back(char c); //尾插一个字符
string& append(字符串);  //尾插字符串,返回操作后的字符串引用
string& operator+=(字符串对象/C字符串、单字符均可);

(头)插入

string& insert(size_t pos,const string& str);	//pos位置插入string对象
string& insert(size_t pos,const char* s);		//pos位置插入c字符数组
string& insert(size_t pos,size_t n,char c);		//pos位置插入n个单字符
iterator insert(iterator p,char c);				//迭代器位置插入单字符

删除

string& erase(size_t pos = 0;size_t len = npos); //默认清除
iterator erase(iterator p);						//删除迭代器位置单字符
iterator erase(iterator first,iterator last);						//删除迭代器位置字符串

替换,查找 replace,find

//find系列
rfind 			//倒着找
find_first_of	//在字符串里查找传入字符串里面的任何字符
find_last_of	//倒着的find_first_of
find_first_not_of
find_last_not_of    

兼容C语言

const char* c_str()const;
//这个函数的作用其实时为了C++对C语言的兼容
//作用: 获取C字符串的等效项
//返回一个指向数组的指针,该数组包含以 null('\0') 结尾的字符序列即C字符串,此数组包含构成字符串对象值的相同字符序列,以及末尾的附加终止'\0'字符.

非成员函数接口

string operator+(,)//字符串与字符串相加,字符串与C字符数组/字符相加,C字符数组/字符与字符串相加
//重载成全局原因在于参数位置可以互换(加法交换律。。)

string还实现了各种运算符重载

在这里插入图片描述

//getline 解决了cin接收字符串遇到' '结束的问题
//getline 默认遇到\n结束
istream& getline (istream& is, string& str, char delim);//可以传入参数自定义终止字符为delim
istream& getline (istream& is, string& str);			//默认种植字符为'\n'	

字符串最后一个单词的长度_牛客题霸_牛客网


string substr(size_t pos,size_t len);
返回原字符串从pos位置开始的len个字符的子串

实现string重载流插入和流提取

inline ostream& operator<<(ostream& cout, const string& str)
{for (auto ch : str){cout << ch;}return cout;
}inline istream& operator>>(istream& cin, string& str)
{str.clear();char ch = cin.get();while (ch != ' ' && ch != '\n'){str += ch;ch = cin.get();}return cin;
}

重载operator>>中涉及到C++中cin默认以‘ ’和’\n’为分隔符,提取不到’ ‘和’\n’,故不能使用cin,应当调用istream对象的get()函数(可以取到任何字符),用法和getc()类似。

http://www.dtcms.com/a/596533.html

相关文章:

  • 网站建设科技建盏大师排名与落款
  • 【面经 每日一题】面试题16.25.LRU缓存(medium)
  • 网站推广常用的方法seo搜索引擎优化视频
  • XML的了解
  • 开源制品管理工具Hadess,一键安装及快速入门教程
  • 【云运维】Python基础(三)
  • MyBatis-Plus 进阶实战:不用写 XML,CRUD + 复杂查询像 “点奶茶” 一样简单
  • 野狗算法详细原理,野狗算法公式,野狗算法求解目标函数极值
  • V-Ray 渲染高效优化指南
  • 商丘网站建设的公司哪家好菏泽网站建设
  • RobotFramework框架基本功能语法
  • 120. 三角形最小路径和
  • Redis(116)Redis的内存管理如何实现?
  • 如何通过中药饮片采购平台实现安全高效的全链路供应链建立?
  • 兴县做网站的公司wordpress登陆改图标和连接
  • CSV的读写
  • 【讨论】VR + 具身智能 + 人形机器人:通往现实世界的智能接口
  • android studio 里的 activity 和 layout 是怎么关联上的
  • 临桂区建设局网站北京seo做排名
  • 东阳建设局网站自适应网站建设多少钱
  • UI创作思想总结
  • 4、Python3.11新特性
  • Java-Spring入门指南(二十九)Android交互核心:按钮点击事件与Activity跳转实战
  • 云手机的两大核心技术
  • Postman VS swagger VS PostIn,接口管理工具选型指南
  • 【大数据技术05】数据加工
  • es 书籍检索-上篇
  • Electron 智能文件分析器开发实战适配鸿蒙
  • 鸿蒙文件操作
  • 手工做环保衣的网站湖北省工程建设信息官方网站