> 文章列表 > string容器及其简单使用

string容器及其简单使用

string容器及其简单使用

string容器

  • 概述
  • 声明和初始化
  • 获取字符串长度
  • 字符串拼接
  • 字符串比较
  • 字符串插入和删除
  • 字符串转换

概述

string是C++中的一个标准库容器,用于处理字符串。它提供了一系列的操作函数,使得我们可以像处理其他容器一样方便地处理字符串。下面是string容器的详细介绍:

声明和初始化

我们可以通过以下方式声明和初始化一个string对象:

string s1;             // 默认构造函数,s1为空字符串
string s2("hello");    // 使用字符串字面值初始化s2
string s3 = "world";   // 使用赋值运算符初始化s3
string s4(s2);         // 使用s2初始化s4

获取字符串长度

string容器中提供了一个函数size(),可以用来获取字符串的长度,例如:

string s = "hello";
int len = s.size();   // len为5

访问字符串元素
我们可以通过下标或迭代器来访问字符串中的元素:


string s = "hello";
char c1 = s[0];          // c1为'h'
char c2 = s.at(1);       // c2为'e'
string::iterator it = s.begin();
char c3 = *it;           // c3为'h'

需要注意的是,当我们使用下标访问字符串时,如果下标越界,程序将会出错。而使用at()函数访问时,如果下标越界,将会抛出std::out_of_range异常。

字符串拼接

我们可以使用+运算符来将两个字符串拼接起来,例如:


string s1 = "hello";
string s2 = "world";
string s3 = s1 + s2;    // s3为"helloworld"

字符串比较

我们可以使用==、!=、<、>、<=、>=等运算符来比较两个字符串的大小关系,例如:

string s1 = "hello";
string s2 = "world";
bool b1 = (s1 == s2);   // b1为false
bool b2 = (s1 < s2);    // b2为true

需要注意的是,字符串比较时是按照字典序进行比较的。

字符串查找和替换
string容器提供了一系列函数来进行字符串的查找和替换,例如:


string s = "hello world";
int pos = s.find("world");       // pos为6
string s1 = s.substr(0, 5);      // s1为"hello"
s.replace(pos, 5, "there");      // s变为"hello there"

其中,find()函数用于查找字符串中是否包含指定的子串,如果包含,返回该子串在字符串中的起始位置,否则返回-1。substr()函数用于获取指定位置的子串。replace()函数用于将指定位置的子串替换为另一个子串。

字符串插入和删除

我们可以使用insert()函数向字符串中插入新的字符,也可以使用erase()函数删除指定位置的字符,例如:

string s = "hello world";
s.insert(5, "there ");    // s变为"hello there world"
s.erase(11, 1);           // s变为"hello thereorld"

其中,insert()函数用于在指定位置插入一个字符串或字符,第一个参数为插入位置的下标,第二个参数为插入的字符串或字符。erase()函数用于删除从指定位置开始指定长度的字符,第一个参数为删除起始位置的下标,第二个参数为要删除的字符个数。

字符串转换

string容器提供了一些函数来进行字符串和数字之间的转换,例如:


string s = "123";
int n = stoi(s);           // n为123
double d = stod(s);        // d为123.0
string s1 = to_string(n);  // s1为"123"

其中,stoi()函数可以将字符串转换为整型,stod()函数可以将字符串转换为双精度浮点型,to_string()函数可以将数字转换为字符串。

总的来说,string容器提供了丰富的函数来处理字符串,可以方便地完成字符串的操作。如果需要对字符串进行复杂的操作,也可以使用正则表达式库或其他字符串处理库来进行。