C++容器string的运用和注意

简介: C++容器string的运用和注意

介绍

       首先,先说明,string在C++的string头文件中定义,而在C语言中的字符串就是字符数组,在C++中,string容器相当于C语言中的字符数组,string比C语言中的字符数组更为好用,如:C++中cin/cout可以直接读写string类型,但却不能读写字符数组,string还可以像整数那样"相加",并且string容器还支持许多流式的读写以及各种的函数和运算符操作,但是string的运算速度有些慢。


一,string的赋值操作

1,直接用string函数进行初始化

       具体功能和解释如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{
  string s1;
  const char* a = "abcd";
  string s2(a);//进行初始化s2,等效于s2 = a
  cout << "s2 = " << s2 << endl;
  s1 = s2;//不可s1 = a,因为在此种数组结构中string形式才可以直接赋值
  cout << "s1 = " << s1 << endl;
  string s4(10, 'a');//放入10个a,这里第二个参数只能是字符,不能是串
  cout << "s4 = " << s4 << endl;
  string s5(a, 1, 2);//从a第1个位置上开始的2个元素放入s5中
  cout << "s5 = " << s5 << endl;
    string s6("abcdef",5);//将串"abcdef"的前5个元素赋给s6
    cout << "s6 = " << s6 << endl; 
  return 0;
}

       在这里要说明的是,运用以上方式进行赋值时不能先建立,后赋值,必须建立时就进行初始化。即:

//以下是错误的运用

#include<iostream>
#include<string>
using namespace std;
int main()
{
   string s1;
   const char* a = "abcd";
   string s2;
   s2(a);

   string s4;
   s4(10, 'a');

   string s5;
   s5(a, 1, 2);

   string s6;
   s6("abcdef", 5);
   return 0;
}

2,assrgn函数的赋值操作

       在很多情况我们需要对string进行赋值操作,若要用类似于以上的方式进行赋值,要用string容器中所支持的assign函数,如下代码:

//以下是正确的用法

#include<iostream>
#include<string>
using namespace std;
int main()
{
   string s1;
   const char* a = "abcd";
   string s2;
   s2.assign(a);

   string s4;
   s4.assign(10, 'a');

   string s5;
   s5.assign(a, 1, 2);

   string s6;
   s6.assign("abcdef", 5);
   return 0;
}

       以上是常见的assign四种赋值操作。

二,添加串append的运用

       append的作用跟C语言中的strcat函数作用相同(但要比此结构高级很多),此函数可在不不同位置进行添加,运用比较灵活。

       C++容器string中支持append的运用,此函数的用法与assig的用法一样,只是功能不同罢了,前面代码已经说明了很清楚了这种用法,在这里我就直接用代码跟大家演示:

#include<iostream>
#include<string>
using namespace std;
int main()
{
  string s7;
  s7.append("abc");//将" abc"加在s7的末尾
  cout << "s7 = " << s7 << endl;
  s7.append("abcdef", 3);//将数组"abcdef"的前3个字符加在s7的后面
  cout << "s7 = " << s7 << endl;
  s7.append(5, 'w');//将5个字符'w'加在s7的末尾
  cout << "s7 = " << s7 << endl;
  s7.append(s7, 4, 3);//截取从s7的第4个下标字符开始,往后的3个字符,下标从0开始
  cout << "s7 = " << s7 << endl;
  return 0;
}

三,string容器的插入,删除,访问,截取操作

       插入操作的函数是insert,删除操作的操作有erase和pop(其中erase的删除比较灵活,pop删除操作在string容器支持中只能删除首元素),访问元素可以用C语言中的符号"[]"或这C++中的at,截取操作有substr。具体使用如下代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
  //insert插入操作
  string s1 = "abc";
  s1.insert(1, "123");//从第1个位置起插入"123"串,下标从0开始
  cout << "s1 = " << s1 << endl;
  s1.insert(0, 2, '5');//向开头位置插入2个字符'5',第三个参数不能为串,只能为字符
  cout << "s1 = " << s1 << endl;
  //at访问操作,s.at(i)等效于s[i]
  string s = "abcdefg";
  cout << "s = ";
  for (int i = 0; i < s.size(); i++) {
    cout << s.at(i) << " ";
  }
  cout << endl;
  //erase和pop删除操作的运用
  string str1 = "abcdefg";
  str1.pop_back();//删除末尾元素的操作
  cout << "str1 = " << str1 << endl;
  str1.erase(1, 3);//从第1个下标起删除三个字符,下标从0开始
  cout << "str1 = " << str1 << endl;
  //substr获取截取子串的运用
  string str2 = "abcdef";
  string a = str2.substr(1, 3);//从str的第1个下标起截取3个字符赋给a
  cout << "a = " << a << endl;
  return 0;
}

       总:以上就是C++中容器string的几种常规操作,对于初学者而言,C++的语法和运用层次虽然简单,但C++的语法过多,结构凌乱,可能导致学者容易过忘,本文章将其中常规的操作基本全部整理融合,方便学者学习可记忆,希望得到大家支持。

相关文章
|
21天前
|
C语言 C++ 容器
【c++丨STL】string模拟实现(附源码)
本文详细介绍了如何模拟实现C++ STL中的`string`类,包括其构造函数、拷贝构造、赋值重载、析构函数等基本功能,以及字符串的插入、删除、查找、比较等操作。文章还展示了如何实现输入输出流操作符,使自定义的`string`类能够方便地与`cin`和`cout`配合使用。通过这些实现,读者不仅能加深对`string`类的理解,还能提升对C++编程技巧的掌握。
46 5
|
21天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
31 2
|
2月前
|
C++ 容器
|
23天前
|
存储 设计模式 C++
【C++】优先级队列(容器适配器)
本文介绍了C++ STL中的线性容器及其适配器,包括栈、队列和优先队列的设计与实现。详细解析了`deque`的特点和存储结构,以及如何利用`deque`实现栈、队列和优先队列。通过自定义命名空间和类模板,展示了如何模拟实现这些容器适配器,重点讲解了优先队列的内部机制,如堆的构建与维护方法。
31 0
|
2月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
26 1
|
2月前
|
C++ 容器
|
2月前
|
C++ 容器
|
2月前
|
C语言 C++
深度剖析C++string(中)
深度剖析C++string(中)
51 0
|
2月前
|
存储 编译器 程序员
深度剖析C++string(上篇)(2)
深度剖析C++string(上篇)(2)
39 0
|
2月前
|
存储 Linux C语言
深度剖析C++string(上篇)(1)
深度剖析C++string(上篇)(1)
33 0

热门文章

最新文章