博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ string的用法
阅读量:5972 次
发布时间:2019-06-19

本文共 2514 字,大约阅读时间需要 8 分钟。

    最近在写正文抽取的过程中,经常用到字符串处理,为了更好的定制,就没使用第三方的字符串处理库,而选择了c++自带的标准库string

    真正使用的时候,发现知道方法名,不知道怎么用了(参数),所以在网上找了个方法列表:

#include 
// 注意是
using namespace std;//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 *s,int n); 用c字符串s开始的n个字符赋值string &assign(int n,char c); 用n个字符c赋值给当前字符串string &s,int start,int 把字符串s中从start开始的n个字符赋给当前字符串string &assign(const_iterator first,const_itertor last); 把first和last迭代器之间的部分赋给字符串string的连接:string &operator+="(const" 把字符串s连接到当前字符串的结尾 &append(const 把c类型字符串s连接到当前字符串结尾string 把c类型字符串s的前n个字符连接到当前字符串结尾string 同operator+="()string" pos,int 把字符串s中从pos开始的n个字符连接到当前字符串的结尾string &append(int 在当前字符串结尾添加n个字符cstring &append(const_iterator first,const_iterator 把迭代器first和last之间的部分连接到当前字符串的结尾 string的比较:bool operator="=(const" &s1,const &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.查找(“world”的位置)

string hello("Hello world!");string::size_type pos = hello.find("world");printf("the Pos is %d\n", pos);
<<< the Pos is 6

2.替换(将"world"替换为"girl")

string hello("Hello world!");string::size_type pos = hello.find("world");printf("Before replace : %s\n", hello.c_str());hello.replace(pos, strlen("world"), "girl");    printf("After replace : %s\n", hello.c_str());
<<< Before replace : Hello world    After replace : Hello girl!

3.子字符串(获取空格之前的单词-Hello)

string hello("Hello world!");string::size_type pos = hello.find(" ", 0);string tmp = hello.substr(0, pos);    printf("Substr : %s\n", tmp.c_str());
<<< Substr : Hello

4.比较

string hello("Hello world!");string hello2("Hello2 world!");if(hello.compare(0, 4, hello2, 0, 4) == 0)    printf("Equal!\n");if(hello.compare(0, 5, hello2) != 0)    printf("Not equal!\n");
<<< Equal!    Not equal!

 

转载于:https://www.cnblogs.com/geekma/archive/2012/08/27/2658314.html

你可能感兴趣的文章
关于c++中如何调整输出格式的讲解!!!
查看>>
(原創) 如何在Windows XP使用微軟正黑體? (OS) (Windows)
查看>>
拓扑排序 soj1075
查看>>
wav文件格式分析
查看>>
[New Portal]Windows Azure Storage (13) 本地冗余存储 vs 地理冗余存储 (下)
查看>>
利用OCR识别扫描的jpg、tif文件的文字
查看>>
(转)超过 130 个你需要了解的 vim 命令
查看>>
用反射解决水果篮问题 [Design, C#]
查看>>
网络协议栈4:bind()函数
查看>>
POJ 3468 A Simple Problem with Integers (伸展树区间更新求和操作 , 模板)
查看>>
pycharm 注册码/License server 2017年最新
查看>>
json序列化对象
查看>>
GTD时间管理阅读笔记
查看>>
中间件的调度
查看>>
《ASP.NET AJAX程序设计》图书相关资源总索引
查看>>
SecureCRT 绝佳配色方案, 保护你的眼睛
查看>>
深度学习网络训练技巧汇总
查看>>
ZOJ 2859 Matrix Searching(二维线段树)
查看>>
SQL Server: Datetime,Datetime2
查看>>
艾伟也谈项目管理,如何完成看似不可能完成的任务
查看>>