码迷,mamicode.com
首页 > 编程语言 > 详细

C++Primer笔记(3)

时间:2015-11-26 23:12:31      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

标准库类型string表示可变长的字符序列,使用前先包含string头文件。(哈哈,终于可以逃脱C语言中的str函数系列了。)因为是标准库的一部分,所以string被定义在命名空间std。所以你懂该怎么做(参见笔记(2))。

stl_string_fwd.h中找到如下语句:

typedef basic_string<char>    string;

basic_string是一个模板类,在string中有定义。可以看是对char类型的一个封装,未对其进行深挖,所以本次笔记只做为string操作手册使用。

初始化string对象的方式:

string s1;              //默认初始化,s1为空串
string s2(s1);          //s2是s1的副本
string s2 = s1;         //等价于上一行
string s3("test");      //s3是字面值"test"的副本,除了最后的空字符外
string s3 = "test";     //等价于上一行
string s4(n, c);      //s4被初始化为n个‘c‘组成的字符串
string s5(cp, n);       //s5是cp指向的字符串数组中前n个字符的拷贝。此数组至少应该包含n个字符
string s6(s5, n);       //s6是s5从下标n开始的字符的拷贝。若s5.size()<n,则构造函数行为未定义
string s6(s5, n, m);    //s6是s5从下标n开始m个字符的拷贝。若s5.size()<n,则构造函数行为未定义。不管m值是多少,构造函数至多拷贝s5.size() - n个字符

 

string对象上的操作:

os << s            将s写到输入流os当中,返回os
is  >> s           从is中读取字符串赋给s,字符串以空白分隔,返回is
getline(is, s)     从is中读取一行赋给s,返回is
s.empty()          判断s是否为空,为空返回true,否则返回false
s.size()           返回s中字符的个数
s[n]               返回s中第n个字符的引用,位置n从0开始
s1 + s2            返回s1、s2拼接后的内容
s1 = s2            用s2的副本代替s1中内容
s1 == s2         判断s1、s2是否相等
s1 != s2           是否不相等
<,<=,>,>=          利用字符在字典中的顺序进行比较,从首个字符开始向后依次比较,一有结果立刻返回。

插入

s.insert(pos, args);    //在pos之前插入args指定的字符。pos可以是一个下标或者迭代器。接受下标的版本返回一个指向s的引用,接受迭代器的版本返回指向第一个插入字符的迭代器。

删除

s.erase(pos, len);    //删除从位置pos开始的len个字符。如果len被省略,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用

替换

s.assign(args);    //将s中的字符替换为args指定的字符。返回一个指向s的引用
s.replace(n, m, args);    //删除从下标n开始m个字符或删除迭代器n和m表示的范围中的字符,替换为args指定的字符。

追加

s.append(args);    //将args中的字符追加到s中,返回一个指向s的引用

子字符串操作

s.substr(pos, n);    //返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值是0,n的默认值是s.size() - pos,即拷贝从pos开始的所有字符

搜索

s.find(args);                //查找s中args第一次出现的位置
s.rfind(args);               //查找s中args最后一次出现的位置
s.find_first_of(args);       //在s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args);        //在s中查找args中任何一个字符最后一次出现的位置
s.find_first_not_of(args);   //在s中查找第一个不在args中的字符
s.find_last_not_of(args);    //在s中查找最后一个不在args中的字符

比较

s.compare(s1);                         //比较string s和s1
s1.compare(pos1, n1, s2);              //将s1中从pos1开始的n1个字符与s2进行比较
s1.compare(pos1, n1, s2, pos2, n2);    //将s中从pos1开始的n1个字符与s2中从pos2开始的n2个字符串进行比较
s.compare(cp);                         //比较s和cp指向的以空字符结尾的字符串数组
s1.compare(pos1, n1, cp);              //将s1和从pos1开始的n1个字符与cp指向的以空字符结尾的字符串数组比较
s1.compare(pos1, n1, cp, n2);          //将s1和从pos1开始的n1个字符与指针cp指向的地址开始的n2个字符进行比较

 string和数值之间的转换

to_string(var);    //返回数值val的string表示。val可以是任意算术类型

/*返回s的起始子串的数值*/ stoi(s, p, b); //返回int型 stol(s, p, b); //返回long型 stoul(s, p, b); //返回unsigned long型 stoll(s, p, b); //返回long long型 stoull(s, p, b); //返回unsigned long long型 stof(s, p, b); //返回float型 stod(s, p, b); //返回double型 stold(s, p, b); //返回long double型 /*其中p为size_t类型的指针,用来存放第一个非数值字符的下标,默认为0*/ /*b表示进制,默认为10*/

此处应注意在string转数值时,所提供的string中第一个非空白字符必须是数值中可能出现的字符!

C++Primer笔记(3)

标签:

原文地址:http://www.cnblogs.com/noobknight/p/4998972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!