常见C++函数罗列及详解(string篇)

一、篇前语:

​ 作为占比最大的数据处理类型,string的处理一直困扰着无数的入门者和初学者。C++标准库中的string class其实一直做着事情是,使string能够被当作一般类型去处理而不会存在太多问题。想要进一步学习C++设计语言乃至编程,搞懂C++标准库中string里提供的全部函数能帮助你更容易掌握这种类型的处理。

​ 本文旨在对string的函数进行简单罗列及附带example代码的讲解来帮助读者速查string相关函数的使用方法及协助尝试一些之前未使用过的函数。

二、函数罗列及详解:

首先,在罗列函数之前,需要对如何使用该类的过程进行简单的讲解。任何类型都离不开所属头文件的调用、构造。头文件<string>定义了所有的string类型和其函数。</string>

#include <string>

并且,所有标识符都定义于命名空间std里面。

using namespace std;

(1)构造函数和析构函数(Constructor and Destructor)

(2)大小和容量(Size and Capacity)

(3)元素访问(Element and Access)

(4)比较(Comparison)

(5)更改内容 (Modifier)

(6)子字符串 (Substring)及字符串接合(String Concatenation)

函数名或运算符 功能
substr Generate substring 生成子串
+ Concatenate string 接合字符串
1)成员函数 string substr (size_t pos = 0, size_t len = npos) const;

substr( ) 至多接收两个形参:

​ 第一个参数是所生成子串在原字符串中的起始位置pos,如果该数值等于字符串长度,则返回一个空字符串;如果该数值大于字符串长度,则抛出 out_of_range。

​ 第二个参数是所要生成的子串长度len,如果string在pos之后所剩的长度不足len,那么会可能的将剩下的字符转换为子串(简而言之,还剩多少就给多少)。如果该len参数为空,则默认将直到结尾的全部字符转换为子串。

两者都不能为负,因为size_t 是非负整型。

Example:

string s ="Hello World";
s.substr();      //1)形参数目为0:返回s的一个copy
s.substr(6);     //2) 形参数目为1,默认为pos,无len,直到结尾:返回 "World"
s.substr(0,5);     //3) 形参数目为2,返回 "Hello"
s.substr(s.find('H')); //4) 形参数目为1,同2),直到结尾:返回 "Hello World"
s.substr(6,6);   //5) 形参数目为2,len超过所剩,全部转换,返回 "World"
2) opreator +

操作符 + 可以将多个string连接起来:

类型 定义
string (1) string operator+ (const string& lhs, const string& rhs);
string operator+ (string&& lhs, string&& rhs);
string operator+ (string&& lhs, const string& rhs);
string operator+ (const string& lhs, string&& rhs);
c-string(2) string operator+ (const string& lhs, const char* rhs);
string operator+ (string&& lhs, const char* rhs);
string operator+ (const char* lhs, const string& rhs);
string operator+ (const char* lhs, string&& rhs);
character (3) string operator+ (const string& lhs, char rhs);
string operator+ (string&& lhs, char rhs);
string operator+ (char lhs, const string& rhs);
string operator+ (char lhs, string&& rhs);

Example:

C++ 11新特性:

In the signatures taking at least one rvalue reference as argument, the returned object is move-constructed by passing this argument, which is left in an unspecified but valid state. If both arguments are rvalue references, only one of them is moved (it is unspecified which), with the other one preserving its value.

意思是如果一个string实参被传给operator+且以后不再被使用,就用对该string使用move()将其搬移给操作符。这时该实参会变成有效但是未指定值的状态。

(7)I/O 操作符

(8)搜索和查找(Searching and Finding)

(9)数值转换 (Numeric Conversion)

(10)迭代器支持 (Iterator Support)

C++ 11新特性:

(1) 从string转换成其他类型:

函数名 功能
stoi Convert string to integer 转成 int型
stol Convert string to long int 转成 long int型
stoul Convert string to unsigned integer 转成 非负int型
stoll Convert string to long long 转成 long long型
stoull Convert string to unsigned long long 转成 非负long long型
stof Convert string to float 转成 float型
stod Convert string to double 转成 double型
stold Convert string to long double 转成 long double型

(2)从其他类型转换成string:

函数名 功能
to_string Convert numerical value to string 将数值转成string
to_wstring Convert numerical value to wide string 将数值转成wide string
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务