`
睡着的兔子
  • 浏览: 34477 次
  • 性别: 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

分享到:
评论

相关推荐

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    COM c++技术资料

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

    用c++写的魔方源码2

    本项目名为“用C++写的魔方源码2”,是一个基于控制台的程序,通过键盘交互来模拟魔方的操作。虽然它的用户界面可能显得朴素,但其核心算法和逻辑设计却体现了C++的强大功能和灵活性。 首先,让我们关注一下这个...

    [c、c++]宏中#和##的用法(zz).docx

    它会将两个相邻的标识符或操作数连接成一个新的标识符。例如,`CONS(a, b)`宏定义中,`a##e##b`会将`a`和`b`连接成`aeb`,然后在`int`关键字之后形成一个整型常量。在`main()`中,`CONS(2, 3)`会被解析为`int(2e3)`...

    linux vscode便携版 + c++扩展

    另一款插件"danielpinto8zz6.c-cpp-compile-run-1.0.49.vsix"可能是用于C/C++编译和运行的辅助工具,它简化了编译和运行C++代码的过程,用户只需点击一下就可以完成代码的编译和执行,对于初学者或者快速测试代码...

    c++标准程序库

    4. 函数对象(仿函数):C++标准程序库中的函数对象是具有操作符()的对象,可以像普通函数一样调用。它们常用于算法中,提供了一种自定义行为的方式,如比较(std::less, std::greater)和变换(std::plus, std::...

    matlab转化为C++,C.docx

    这个过程可能需要一些时间,取决于函数的复杂度和输入类型。 测试和检查 在生成 C++ 代码后,需要测试和检查生成的代码是否正确。如果出现错误,需要根据 log 文件来检查输入数据和参数。 总结 Matlab 转换为 ...

    吉时利2600系列,2612A程控开发(C++)Qt

    在C++中,通常使用NI的Visa库(NI-VISA),它提供了丰富的函数调用来执行读写操作,如`visaOpenSession`、`visaWrite`、`visaRead`等。 **源表控制的关键步骤** 1. **初始化Visa资源**:首先,需要找到2612A设备的...

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    算法c++助力复试上机

    总的来说,"算法C++助力复试上机"是一个全面的复习计划,涵盖了理论学习和实践操作两方面。考生应充分利用这些资料,既要深入理解算法背后的数学原理,也要掌握C++语言的编程技巧,这样才能在考研复试的上机环节中...

    50条C++编辑经验

    15. 和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好。 常见误区 16. C++不仅仅是支持面向对象的程序设计语言。 17. 学习C++需要学习C++语言本身,而不是学习集成开发环境。 18. C++绝不是...

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    约瑟夫环(C++源码)

    这是个约瑟夫环问题: 已知n个人(以编号1,2,3,…,n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围...

    UDP C++BUILDER2010

    UDP通讯 用了 IdUDPClient IdUDPServer 发TXT和发二进制数,为初学者引砖抛玉 在C++BUILDER2010 中编译通过

    c语言c++设计-产品入库管理操作系统

    c语言c++设计-产品入库管理操作系统提取方式是百度网盘分享地址

    B+树C++实现

    B+树的C++实现版本 用法举例: /* * @param bkSize 区块大小,及每个数据块的大小,建议与硬盘的区块大小相同(一般为512或4096),此值不能过小否则会导致初始化失败. * @param filePath b+树关联的文件位置. * @...

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    ZZ-2022010 机器人技术应用赛项赛题.zip

    通过“ZZ-2022010 机器人技术应用赛项”,学生将有机会将理论知识与实际操作相结合,提高问题解决能力,培养创新思维。这样的比赛对于准备技能大赛的中职学生来说,是一次宝贵的实践经验,有助于他们在未来的职业...

    各种加解密算法c++源码

    AES的核心是通过一系列的混淆和置换操作,包括字节替换、行移位、列混淆和轮密钥加法等步骤,确保了加密的强度。C++实现AES时,需要关注密钥扩展、状态矩阵变换等关键步骤。 2. **DES(Data Encryption Standard)*...

    zz.rar_visual c

    《Visual C++编程基础与实践——基于"zz.rar"案例解析》 Visual C++作为Microsoft公司推出的集成开发环境,是Windows平台上进行C++程序开发的重要工具。它集成了编译器、调试器以及资源编辑器等,使得C++开发者能够...

Global site tag (gtag.js) - Google Analytics