`
睡着的兔子
  • 浏览: 34958 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ZZ c++ string一些操作

阅读更多

下面便是string类所包含的常用函数:

string类的构造函数:
string(const char *s);     //用c字符串s初始化
string(int n,char c);      //用n个字符c初始化
此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常

string类的字符操作:
const char &operator[](int n)const;
const char &at(int n)const;
char &operator[](int n);
char &at(int n);
operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。
const char *data()const;//返回一个非null终止的c字符数组
const char *c_str()const;//返回一个以null终止的c字符串
int copy(char *s, int n, int pos = 0) const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目

string的特性描述:
int capacity()const;     //返回当前容量(即string中不必增加内存即可存放的元素个数)
int max_size()const;     //返回string对象中可存放的最大字符串的长度
int size()const;         //返回当前字符串的大小
int length()const;        //返回当前字符串的长度
bool empty()const;         //当前字符串是否为空
void resize(int len,char c);//把字符串当前大小置为len,并用字符c填充不足的部分

string类的输入输出操作:
string类重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作。
函数getline(istream &in,string &s);用于从输入流in中读取字符串到s中,以换行符'\n'分开。
  

string的赋值:
string &operator=(const string &s);//把字符串s赋给当前字符串
string &assign(const char *s);//用c类型字符串s赋值
string &assign(const char *s,int n);//用c字符串s开始的n个字符赋值
string &assign(const string &s);//把字符串s赋给当前字符串
string &assign(int n,char c);//用n个字符c赋值给当前字符串
string &assign(const string &s,int start,int n);//把字符串s中从start开始的n个字符赋给当前字符串
string &assign(const_iterator first,const_itertor last);//把first和last迭代器之间的部分赋给字符串
  

string的连接:
string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾
string &append(const char *s);             //把c类型字符串s连接到当前字符串结尾
string &append(const char *s,int n);//把c类型字符串s的前n个字符连接到当前字符串结尾
string &append(const string &s);     //同operator+=()
string &append(const string &s,int pos,int n);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾
string &append(int n,char c);         //在当前字符串结尾添加n个字符c
string &append(const_iterator first,const_iterator last);//把迭代器first和last之间的部分连接到当前字符串的结尾
  

string的比较:
bool operator==(const string &s1,const string &s2)const;//比较两个字符串是否相等
运算符">","<",">=","<=","!="均被重载用于字符串的比较;
int compare(const string &s) const;//比较当前字符串和s的大小
int compare(int pos, int n,const string &s)const;//比较当前字符串从pos开始的n个字符组成的字符串与s的大小
int compare(int pos, int n,const string &s,int pos2,int n2)const;//比较当前字符串从pos开始的n个字符组成的字符串与s中pos2开始的n2个字符组成的字符串的大小
int compare(const char *s) const;
int compare(int pos, int n,const char *s) const;
int compare(int pos, int n,const char *s, int pos2) const;
compare函数在>时返回1,<时返回-1,==时返回0   

string的子串:
string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串


string的交换:
void swap(string &s2);     //交换当前字符串与s2的值

  

string类的查找函数:

int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置
int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
//查找成功时返回所在位置,失败返回string::npos的值

int rfind(char c, int pos = npos) const;//从pos开始从后向前查找字符c在当前串中的位置
int rfind(const char *s, int pos = npos) const;
int rfind(const char *s, int pos, int n = npos) const;
int rfind(const string &s,int pos = npos) const;
//从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值

int find_first_of(char c, int pos = 0) const;//从pos开始查找字符c第一次出现的位置
int find_first_of(const char *s, int pos = 0) const;
int find_first_of(const char *s, int pos, int n) const;
int find_first_of(const string &s,int pos = 0) const;
//从pos开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。查找失败返回string::npos

int find_first_not_of(char c, int pos = 0) const;
int find_first_not_of(const char *s, int pos = 0) const;
int find_first_not_of(const char *s, int pos,int n) const;
int find_first_not_of(const string &s,int pos = 0) const;
//从当前串中查找第一个不在串s中的字符出现的位置,失败返回string::npos

int find_last_of(char c, int pos = npos) const;
int find_last_of(const char *s, int pos = npos) const;
int find_last_of(const char *s, int pos, int n = npos) const;
int find_last_of(const string &s,int pos = npos) const;

int find_last_not_of(char c, int pos = npos) const;
int find_last_not_of(const char *s, int pos = npos) const;
int find_last_not_of(const char *s, int pos,   int n) const;
int find_last_not_of(const string &s,int pos = npos) const;
//find_last_of和find_last_not_of与find_first_of和find_first_not_of相似,只不过是从后向前查找

  

string类的替换函数:

string &replace(int p0, int n0,const char *s);//删除从p0开始的n0个字符,然后在p0处插入串s
string &replace(int p0, int n0,const char *s, int n);//删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符
string &replace(int p0, int n0,const string &s);//删除从p0开始的n0个字符,然后在p0处插入串s
string &replace(int p0, int n0,const string &s, int pos, int n);//删除p0开始的n0个字符,然后在p0处插入串s中从pos开始的n个字符
string &replace(int p0, int n0,int n, char c);//删除p0开始的n0个字符,然后在p0处插入n个字符c
string &replace(iterator first0, iterator last0,const char *s);//把[first0,last0)之间的部分替换为字符串s
string &replace(iterator first0, iterator last0,const char *s, int n);//把[first0,last0)之间的部分替换为s的前n个字符
string &replace(iterator first0, iterator last0,const string &s);//把[first0,last0)之间的部分替换为串s
string &replace(iterator first0, iterator last0,int n, char c);//把[first0,last0)之间的部分替换为n个字符c
string &replace(iterator first0, iterator last0,const_iterator first, const_iterator last);//把[first0,last0)之间的部分替换成[first,last)之间的字符串

string类的插入函数:

string &insert(int p0, const char *s);
string &insert(int p0, const char *s, int n);
string &insert(int p0,const string &s);
string &insert(int p0,const string &s, int pos, int n);
//前4个函数在p0位置插入字符串s中pos开始的前n个字符
string &insert(int p0, int n, char c);//此函数在p0处插入n个字符c
iterator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置
void insert(iterator it, const_iterator first, const_iterator last);//在it处插入[first,last)之间的字符
void insert(iterator it, int n, char c);//在it处插入n个字符c
  

string类的删除函数

iterator erase(iterator first, iterator last);//删除[first,last)之间的所有字符,返回删除后迭代器的位置
iterator erase(iterator it);//删除it指向的字符,返回删除后迭代器的位置
string &erase(int pos = 0, int n = npos);//删除pos开始的n个字符,返回修改后的字符串

  

string类的迭代器处理:

string类提供了向前和向后遍历的迭代器iterator,迭代器提供了访问各个字符的语法,类似于指针操作,迭代器不检查范围。
用string::iterator或string::const_iterator声明迭代器变量,const_iterator不允许改变迭代的内容。常用迭代器函数有:
const_iterator begin()const;
iterator begin();                 //返回string的起始位置
const_iterator end()const;
iterator end();                     //返回string的最后一个字符后面的位置
const_iterator rbegin()const;
iterator rbegin();                 //返回string的最后一个字符的位置
const_iterator rend()const;
iterator rend();                     //返回string第一个字符位置的前面
rbegin和rend用于从后向前的迭代访问,通过设置迭代器string::reverse_iterator,string::const_reverse_iterator实现

  

字符串流处理:

通过定义ostringstream和istringstream变量实现,<sstream>头文件中
例如:
     string input("hello,this is a test");
     istringstream is(input);
     string s1,s2,s3,s4;
     is>>s1>>s2>>s3>>s4;//s1="hello,this",s2="is",s3="a",s4="test"
     ostringstream os;
     os<<s1<<s2<<s3<<s4;
     cout<<os.str();

 

ZZ:http://blog.wise111.com/blog.php?do-showone-tid-97134.html.html

分享到:
评论

相关推荐

    COM c++技术资料

    STL(Standard Template Library)是C++的标准模板库,`详细解说STL string(ZZ) - 程序设计 - CUDev.mht`可能深入解析了STL中的string类,这是处理文本数据的常用工具,了解其内部机制对于高效编程非常重要。...

    C++语言程序设计(第五版郑莉)第七章课后习题答案

    `student.h`文件定义了一个基础的学生类`student`,包含了一些基本属性和方法: ```cpp //student.h #pragma once #include &lt;string&gt; #include using namespace std; class student{ public: student(void); //...

    C++OpenCV3源代码XML和YAML文件的读取

    在本篇文章中,我们将深入探讨如何使用C++与OpenCV 3进行XML和YAML文件的读取。根据提供的信息,我们了解到这是一个关于C++OpenCV 3编程中读取这两种格式文件的具体实现方法,而具体的源代码已被分享在百度网盘上。...

    C++OpenCV3源代码图像金字塔和resize

    1. **使用`pyrDown()`和`pyrUp()`函数**:这些函数可以方便地实现图像的下采样和上采样操作。 2. **使用`buildPyramid()`函数**:该函数可以一次构建整个金字塔结构。 ### 图像金字塔的应用 图像金字塔在计算机视觉...

    mysql/sql2000/sql2005/oracle数据库驱动包

    Oracle驱动包括JDBC驱动、ODBC驱动、Oracle Call Interface (OCI)等,支持Java、C++、Python等多种编程语言进行数据库操作。 描述中提到的“数据库连接语句”通常指的是SQL连接字符串,它是用来建立数据库连接的一...

    ATM取款机编程代码

    本程序是基于C++语言实现的一个简单的ATM取款机模拟系统。该系统主要功能包括:用户登录、查询余额、修改密码、转账以及取款等基本操作。 #### 2. 重要类与方法介绍 ##### 2.1 Users 类 - **成员变量**: - `...

    Interview:C++ 中的示例面试问题

    #Reverse a String 取一个字符串(输入),输出 string.reverse (tupni) #FizzBu​​zz 从 0 到 100 计数,将任何可被 3 整除的数字替换为“Fizz”,将任何可被 5 整除的数字替换为“Buzz”一词。 使用 "FizzBu​​...

    noip2007解题报告

    这两个题目分别涉及数组处理与字符串操作。 ### 第一题:Count统计数字 #### 题目描述 输入一个数`n`(`n )以及`n`个自然数(每个数都不超过1.5 * 10^9),请统计这些自然数各自出现的次数,并按照数字从小到大的...

    fizzBu​​zz:按语言和方法比较fizzbuzz的性能

    const std::array&lt;std::string, 101&gt; fizzBuzzTable = { // ...预填充0到100的FizzBuzz值... }; void lookupFizzBuzz(int n) { for (int i = 1; i ; ++i) { std::cout [i]; } } ``` 这种方法将FizzBuzz结果预计...

    bcb2010 UDP通讯

    在本文中,我们将深入探讨如何在Borland C++ Builder 2010(简称BCB2010)中实现UDP通信,基于提供的标题"bcb2010 UDP通讯"以及描述中提到的"IdUDPClient"和"IdUDPServer"控件。UDP(User Datagram Protocol)是一种...

    200多个C#面试题含答案总共30页已编辑好可打印

    - XML Web Service可以使用多种.NET兼容的语言进行开发,包括C#、C++、Java等。 ### 11. Web表单中按钮的默认事件 **知识点概述**: - 在Web表单中,按钮的默认事件通常是`Click`事件。 ### 12. ASP.NET窗体应用...

    js基础知识,课堂笔记

    而高级语言如JavaScript、C++、Python等,更接近自然语言,提供了更高的抽象层次,让程序员能够更专注于逻辑和功能实现,而非底层细节。 计算机的基础知识包括计算机组成、数据存储和程序运行。软件在硬件之上运行...

    opencv Dnn模块调用Caffe

    OpenCV的DNN(Deep Neural Network)模块是...总之,OpenCV的DNN模块与Caffe的集成简化了在C++环境中部署深度学习模型的过程。通过理解并实践这些步骤,开发者可以轻松地利用预训练的Caffe模型解决各种计算机视觉问题。

    pythonopencv源码文档扫描OCR识别

    OpenCV不仅支持C++和Python等多种编程语言,还具有跨平台特性,在Windows、Linux、Mac OS等操作系统上均可运行。 ### 文档扫描及OCR技术概述 #### 文档扫描 文档扫描是指通过扫描仪或其他设备将纸质文档转化为数字...

Global site tag (gtag.js) - Google Analytics