C++string常用成员函数

c++中string拥有非常多的成员函数,每个成员函数有很多细分,早期设计出来,有很多相似的功能,推荐几个常用的:

std::string::operator=

字符串:string& operator= (const string& str);
str:一个字符串对象,如果与 this 不同,则其值为复制 。
c 型字符串: string& operator= (const char
s);
s: 指向以 null 结尾的字符序列的指针.序列被复制为字符串的新值.
字符:string& operator= (char ch);
ch:字符串值设置为此字符的单个副本(字符串长度为 1)。

Iterators(迭代器)

std::string::begin:(字符串开头的迭代器)

iterator begin() noexcept;(可修饰)
const_iterator begin() const noexcept;(不可修饰)
将迭代器返回到开头,返回指向字符串第一个字符的迭代器。

std::string::end:(字符串末尾的迭代器)

iterator end() noexcept;(可修饰)
const_iterator end() const noexcept;(不可修饰)
返回迭代器以结束,返回指向字符串的过去结束字符的迭代器。

std::string::rbegin:(字符串反向迭代器)

reverse_iterator rbegin() noexcept;
const_reverse_iterator rbegin() const noexcept;
返回指向字符串最后一个字符(即其反向开头)的反向迭代器。
rbegin 指向成员 End 将指向的字符之前的字符。

std::string::rend:

reverse_iterator rend() noexcept;
const_reverse_iterator rend() const noexcept;
将反向迭代器返回到反向结束,返回一个反向迭代器,该迭代器指向字符串第一个字符(被视为其反向结尾)之前的理论元素。

Capacity:

size && length

size_t size() const noexcept;
size: 字符串的返回长度,返回字符串的长度(以字节为单位)。\

size_t length() const noexcept;
length: 返回字符串的长度(以字节为单位),这是符合字符串内容的实际字节数,不一定等于其存储容量。

std::string::resize:(调整大小)

void resize (size_t n);
void resize (size_t n, char c);
调整字符串大小,将字符串大小调整为 n 个字符的长度。
如果 n 小于当前字符串长度,则当前值将缩短为其第一个 n 个字符,删除第 n 个字符以外的字符。
如果 n 大于当前字符串长度,则通过在末尾插入所需数量的字符以达到 n 大小来扩展当前内容。如果指定了 c,则新元素初始化为 c 的副本,否则,它们是值初始化字符(空字符)。

std::string::capacity(容量)

size_t capacity() const noexcept;
返回已分配存储的大小
返回当前为字符串分配的存储空间的大小,以字节表示。此容量不一定等于字符串长度。它可以相等或更大,额外的空间允许对象在向字符串添加新字符时优化其操作。

std::string::reserve(更改容量)

void reserve (size_t n = 0);
请求使字符串容量适应计划的大小更改为最多 n 个字符。
如果 n 大于当前字符串容量,则该函数会导致容器将其容量增加到 n 个字符(或更大)。

std::string::clear(清空)

void clear() noexcept;
清除字符串,擦除字符串的内容,该字符串将成为空字符串(长度为 0 个字符)。

std::string::empty(判空)

bool empty() const noexcept;
测试字符串是否为空
返回字符串是否为空(即其长度是否为 0)。
此函数不会以任何方式修改字符串的值。若要清除字符串的内容,请参阅 string::clear。

Element access:(元素访问)

std::string::operator[]

char& operator[] (size_t pos);
const char& operator[] (size_t pos) const;
获取字符串的字符
返回对字符串中位置位置的字符的引用。

Modifiers:(编辑器)

std::string::operator+=

string: string& operator+= (const string& str);
c-string : string& operator+= (const char* s);
character: string& operator+= (char c);
通过在字符串的当前值末尾附加其他字符来扩展字符串:
(有关其他追加选项,请参阅成员函数追加)。

std::string::append

string:string& append (const string& str);
字符串:附加 str 的副本。
substring : string& append (const string& str, size_t subpos, size_t sublen);
子字符串: 追加 str 子字符串的副本。子字符串是 str 的一部分,从字符位置 subpos 开始并跨越 sublen 字符(或者直到 str 的末尾,如果 str 太短或 sublen 是 string::npos)。
c-string : string& append (const char* s);
子字符串: 追加 str 子字符串的副本。子字符串是 str 的一部分,从字符位置 subpos 开始并跨越 sublen 字符(或者直到 str 的末尾,如果 str 太短或 sublen 是 string::npos)。

std::string::push_back

void push_back (char c);
将字符附加到字符串
将字符 c 追加到字符串的末尾,将其长度增加 1。

std::string::pop_back

void pop_back();
删除最后一个字符
删除字符串的最后一个字符,有效地将其长度减少 1。

std::string::insert

string : string& insert (size_t pos, const string& str);
字符串:插入 str 的副本。
string& insert (size_t pos, size_t n, char c);
字符:插入字符 c 的 n 个连续字符。

std::string::erase

string& erase (size_t pos = 0, size_t len = npos);
删除字符串值中从字符位置 pos 开始并跨越 len 字符的部分(如果内容太短或 len 是 string::npos,则直到字符串的末尾。默认参数会删除字符串中的所有字符(如成员函数 clear)。
要删除的第一个字符的位置。如果此值大于字符串长度,则会引发out_of_range。

iterator erase (const_iterator p);
删除 p 所指的字符。
要删除的字符的迭代器。

iterator erase (const_iterator first, const_iterator last);
删除范围 [第一个,最后一个] 中的字符序列。
迭代器指定要删除的字符串中的范围]:[first,last)。即,范围包括第一个和最后一个之间的所有字符,包括第一个指向的字符,但不包括最后一个指向的字符。

String operations:(字符串运算)

std::string::c_str

const char* c_str() const noexcept;
获取等效的 C 字符串
返回指向一个数组的指针,该数组包含以 null 结尾的字符序列(即 C 字符串),该序列表示字符串对象的当前值。
此数组包括构成字符串对象值的相同字符序列,以及末尾的附加终止 null 字符 (‘\0’)。

std::string::data

std::string::data
返回指向一个数组的指针,该数组包含以 null 结尾的字符序列(即 C 字符串),该序列表示字符串对象的当前值。数组包括构成字符串对象值的相同字符序列,以及末尾的附加终止 null 字符 (‘\0’)。

std::string::find

在字符串中查找内容
在字符串中搜索由其参数指定的序列的第一个匹配项。
指定 pos 时,搜索仅包括位置位置 pos 处或之后的字符,忽略任何可能出现的包含 pos 之前字符的字符。

size_t find (const string& str, size_t pos = 0) const noexcept;
另一个字符串,其中包含要搜索的主题。

size_t find (const string& str, size_t pos = 0) const noexcept;
要在搜索中考虑的字符串中第一个字符的位置。
如果此值大于字符串长度,则函数永远不会找到匹配项。
注意:第一个字符用值 0(不是 1)表示:值为 0 表示搜索整个字符串。

size_t find (char c, size_t pos = 0) const noexcept;
要搜索的单个字符。

std::string::find_first_of

在字符串中查找字符
在字符串中搜索与其参数中指定的任何字符匹配的第一个字符。
指定 pos 时,搜索仅包括位置位置 pos 处或之后的字符,忽略 pos 之前可能出现的任何字符。

size_t find_first_of (const string& str, size_t pos = 0) const noexcept;
包含要搜索的字符的另一个字符串。
要在搜索中考虑的字符串中第一个字符的位置。
如果此值大于字符串长度,则函数永远不会找到匹配项。
注意:第一个字符用值 0(不是 1)表示:值为 0 表示搜索整个字符串。

size_t find_first_of (char c, size_t pos = 0) const noexcept;
要搜索的单个字符。

返回值
匹配的第一个字符的位置。如果未找到匹配项,则该函数返回 string::npos。

std::string::find_last_of

从末尾查找字符串中的字符
在字符串中搜索与其参数中指定的任何字符匹配的最后一个字符。

size_t find_last_of (const string& str, size_t pos = npos) const noexcept;

size_t find_last_of (char c, size_t pos = npos) const noexcept;

返回值
匹配的最后一个字符的位置。如果未找到匹配项,则该函数返回 string::npos。

std::string::substr

生成子字符串
返回一个新构造的对象,其值初始化为此对象的子字符串的副本。子字符串是从字符位置开始并跨越字符(或直到字符串末尾,以先到者为准)的对象部分。

string substr (size_t pos = 0, size_t len = npos) const;
要复制为子字符串的第一个字符的位置。
如果此值等于字符串长度,则该函数返回一个空字符串。
如果此值大于字符串长度,则会引发out_of_range。
注意:第一个字符由值 0(而不是 1)表示。

返回值
具有此对象的子字符串的字符串对象。

Member constants(常量成员)

std::string::npos

static const size_t npos = -1;
size_t的最大值:作为返回值,它通常用于指示没有匹配项。
此常量定义为值 -1,由于 size_t 是无符号整型,因此它是此类型的最大可能表示值。

Non-member function overloads(非成员函数重载)

std::operator+ (string)

连接字符串:
返回一个新构造的字符串对象,其值是 lhs 中字符的串联,后跟 rhs 中的字符。

在将至少一个右值引用作为参数的签名中,返回的对象是通过传递此参数来移动构造的,该参数处于未指定但有效的状态。如果两个参数都是右值引用,则只移动其中一个参数(未指定哪个),另一个参数保留其值。

string operator+ (const string& lhs, const string& rhs);

运算符左侧和右侧的参数。如果类型为 char*,则它应指向以 null 结尾的字符序列。

返回值:
一个字符串,其值是 lhs 和 rhs 的串联。

std::operator>> (string)

istream& operator>> (istream& is, string& str);
从流中提取字符串
从输入流中提取字符串,将序列存储在 str 中,该序列被覆盖(替换 str 的先前值)。
此函数重载运算符>>以按照 istream::operator>> 中所述的行为,但应用于字符串对象。
每个提取的字符都附加到字符串中,就像调用其成员push_back一样。

std::operator<< (string)

ostream& operator<< (ostream& os, const string& str);
将符合 str 值的字符序列插入到 os 中。

此函数重载运算符<<以按照 ostream::operator<< 中所述的行为对于 c 字符串,但应用于字符串对象。

std::getline (string)

从 is 中提取字符并将其存储到 str 中,直到找到分隔字符 delim 的换行符“\n”)。
如果在 is 中到达文件末尾或在输入操作期间发生其他错误,则提取也会停止。
如果找到分隔符,则将其提取并丢弃(即不存储它,下一个输入操作将在它之后开始)。
每个提取的字符都追加到字符串中,就像调用其成员push_back一样。str

istream& getline (istream& is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);

返回值:
与参数相同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值