C++ string简介及常见用法
2015-10-13 21:22
267 查看
C++ String
写算法之余也插播最近一直没有停止学习C++,以前也用但是始终不是那么深入。
言归正传。
1概述
标准库类型string表示可变长的字符序列,使用前需要包含string头文件,并且string定义在命名空间std中。事实上,string类是basic_string<char>的一个typedef,即有下述语句:
typedef basic_string<char> string;
string类对象提供类似于标准容器的操作,不过是针对字符(char),例如在一些代码中可以看到对string对象调用size()方法来获取对象大小,它与length()方法的效果是一样的。
关于string类的定义可以参考:
http://www.cplusplus.com/reference/string/string/
2.构造函数(提供6个构造函数)
a) string(const char*s)
将string对象初始化为s
例如:
b) string(size_type n,char c)
以n个字符c来初始化string的对象。
例如:
c) string (const string& str, size_t pos=0, size_t len = npos)
拷贝构造函数,也可以指定索引位置开始
例如
d) string()
默认构造函数,创建一个长度为0的string对象
例如:
e) string(const char*s,size_type n)
将string对象初始化为s指向的前n个字符,即使超过了其长度(但是结果会出现乱码)
f) template<class Iter>
string (Iter begin,Iter end)
注:范围是[begin,end),开区间不包括end
之前提到过string类提供类似容器的操作,所以可以进行如下初始化:
3.操作符重载
这里重载了+,+=,<等符号,这个用的比较熟,就不多说了
4.find方法
提供find函数,但是有一点需要非常注意的就是下面一个表达式:
std::string::npos
这个值的定义如下:
static const size_t npos = -1
表示size_t的最大值。这个值是-1的原因是因为size_t表示无符号整数类型。
我们通常结合使用find()和npos来查询子串是否在母串中出现,这里如果不清楚size_t的类型及为什么npos=-1那么只需要记住,使用如下代码来做没找到匹配的判断:
5.获取子串substr()
第一个参数表示子串的起始位置,第二个参数表示子串长度,如果没有给出第二个参数,将默认一直到母串尾。
参考:
https://www.byvoid.com/blog/cpp-string
写的非常详细。
写算法之余也插播最近一直没有停止学习C++,以前也用但是始终不是那么深入。
言归正传。
1概述
标准库类型string表示可变长的字符序列,使用前需要包含string头文件,并且string定义在命名空间std中。事实上,string类是basic_string<char>的一个typedef,即有下述语句:
typedef basic_string<char> string;
string类对象提供类似于标准容器的操作,不过是针对字符(char),例如在一些代码中可以看到对string对象调用size()方法来获取对象大小,它与length()方法的效果是一样的。
string s=”hello” int len = s.size(); //len=5
关于string类的定义可以参考:
http://www.cplusplus.com/reference/string/string/
2.构造函数(提供6个构造函数)
a) string(const char*s)
将string对象初始化为s
例如:
string s(“hello”); cout<<s<<endl; //hello
b) string(size_type n,char c)
以n个字符c来初始化string的对象。
例如:
string s(5,’c’); cout<<s<<endl; //ccccc
c) string (const string& str, size_t pos=0, size_t len = npos)
拷贝构造函数,也可以指定索引位置开始
例如
string s1(“hello”); string s2(s1); //hello string s3(s2,3); //lo注:索引值从0开始,这里的npos为构造函数参数,表示直到string对象的结尾。如果给定参数表示从pos开始子串的长度
string s("hello"); string s1(s,0,3); cout << s1 << endl; //hel
d) string()
默认构造函数,创建一个长度为0的string对象
例如:
string s; cout<<s.size(); //0
e) string(const char*s,size_type n)
将string对象初始化为s指向的前n个字符,即使超过了其长度(但是结果会出现乱码)
f) template<class Iter>
string (Iter begin,Iter end)
注:范围是[begin,end),开区间不包括end
之前提到过string类提供类似容器的操作,所以可以进行如下初始化:
string s("hello"); string s1(s.begin()+3,s.begin()+5); //lo string s2(s.begin(),s.end()); //hello
3.操作符重载
这里重载了+,+=,<等符号,这个用的比较熟,就不多说了
4.find方法
提供find函数,但是有一点需要非常注意的就是下面一个表达式:
std::string::npos
这个值的定义如下:
static const size_t npos = -1
表示size_t的最大值。这个值是-1的原因是因为size_t表示无符号整数类型。
我们通常结合使用find()和npos来查询子串是否在母串中出现,这里如果不清楚size_t的类型及为什么npos=-1那么只需要记住,使用如下代码来做没找到匹配的判断:
if (str.find("abc") == string::npos) { //... }
5.获取子串substr()
string substr (size_t pos = 0, size_t len = npos) const;
第一个参数表示子串的起始位置,第二个参数表示子串长度,如果没有给出第二个参数,将默认一直到母串尾。
参考:
https://www.byvoid.com/blog/cpp-string
写的非常详细。
相关文章推荐
- c++关键字详解
- Cpp--字符串快速查找运用
- C++中的static关键字
- C++程序员学习发展方向分析和指导(C++入门学习指导建议必看)
- 获取进程信息-C++
- 第4周项目5 猴子选大王
- C语言求质数的方法
- 单例模式——C++实现线程安全的单例
- Visual C++内存泄露检测—VLD工具使用说明 .
- More Effective C++ 条款32 在未来时态下发展程序
- C++运行结果中让控制台停住的办法
- 二叉树前序遍历
- 1011. A+B和C (15)
- C++关键字的详解 ---- mutable关键字
- c#入门经典1~4章 与c++的对比
- Dlib库的安装配置
- 【C++】观察者模式
- C++中进程间相互通信的十一种方法(转)
- C++高质量编程笔记
- C语言基础知识进阶(中)