您的位置:首页 > 其它

STRING初步

2015-10-29 09:07 239 查看
NOIP复习之string初步

一.头文件:

#include <string>
#include <sstream>


二.常用函数:

begin 返回指向字符串开头的迭代器

end 返回指向字符串结尾的迭代器

size 返回字符串的大小

empty 判断是否为空(空则返回1,速度快于size)

insert 插入字符

push_back 在尾端插入字符(相当于insert(s.end(),c))

erase 删除字符串

clear 清空字符容器中所有内容

replace 把第i个元素到第j个元素替换成s字符串

find 从某个位置开始查找s子串开头的位置(失败返回-1)

substr 返回i位置到第j位置的子串

compare 比较字符串的大小(字典序)

getline 通过某种方式读入一行字符串

stream << 把字符串读入流中(可读入int,double)

stream >> 把字符串输出(可输出int,double)

三.字符串运算

1.加法

string a = "abc" , b = "de";
cout << a + b << "\n" << b + a ;


屏幕会显示:

abcde

deabc

2.比较

字符串比较按字典序:

(1).字符串短的小,长的大。

(2).字典序在前的小,在后面的大。

四.构造函数

1.
string x;
cin >> x;
string a = x , b(x) , c(x,5);
cout << a << ' ' << b << ' ' << c;
2.
char x[99];
cin >> x;
string a(x) , b(x,5);
cout << a << ' ' << b;


然而,即使输入同样的字符串,上述代码中1.c 和 2.b 也不一样。

原因是1中是从第5个字符开始取,2中是取前五个字符。

五.一些常用代码

//1.迭代器使用:
for(string::iterator it = a.begin(); it < a.end(); ++it);
//2.不用迭代器的遍历:
for(int i = 0; i < a.size(); ++i);
//3.stream用法
string line;
while(getline(cin, line)) {
int sum = 0, x;
stringstream ss(line);
while(ss >> x) sum += x;
cout << sum << "\n";
}


PS:虽然string和sstream都很方便,但string很慢,sstream更慢,应谨慎使用。————摘自刘汝佳白皮书
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: