string,大小可变的字符串,有些类似于C中的字符数组。
只记载本人在ACM中常用的函数,并且全部经过程序测试。
1、初始化
string s1;——默认构造函数s1为空串
string s2(s1);——将s2初始化为与s1相同
string s3("aaa");——将s3初始化为aaa
string s4(3, 'b');——将s4初始化为bbb
2、输入输出
能用cin,cout;不能用scanf,printf。
用cin读入会忽略开头所有空白字符(如空格,换行符,制表符),读取字符直至再次遇到空白字符。
用getline能整行读入(不会忽略前驱空格),读入得到的字符串末尾没有换行符。
3、普通运算符
s[n],s1 + s2,s1 = s2,s1 == s2,!=, <, <=, >, >=均保持它们惯有的含义
4、insert插入
s1.insert(迭代器, 单个字符);——如s1.insert(s1.begin(), 's');
5、erase删除
s1.erase(数字a, 数字b);——删除s1[a]开始,删除b个
s1.erase(迭代器)——删除迭代器指示的那个元素
s1.erase(迭代器a, 迭代器b)——删除迭代器a到迭代器b之间的所有元素,删除迭代器a指示元素,不删b
6、clear清空
7、repalce替换
与erase的一三个用法相似,不过没有第二个用法
8、empty字符串为空返回真,否则返回假
9、substr函数,截取string中的一段。s = s.substr(a, b)则为将s变成自己的从第a位开始,长度为b的子串。(从第0位开始)比如s = "12345",s = s.substr(1, 3),则s = "234"。
测试程序部分为(测试过程中不小心删掉了部分- -)
/*
* Author: Plumrain
* Created Time: 2013-09-05 15:53
* File Name: string.cpp
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string> using namespace std; #define out(x) cout<<#x<<":"<<(x)<<endl
#define tst(a) cout<<#a<<endl void test_1()
{
string s1;
out (s1);
s1 = "aaa";
string s2(s1);
out (s2);
string s3("bbb");
out (s3);
string s4(, 'c');
out (s4);
} void test_2()
{
string s1;
cin >> s1;
cout << s1 << endl;
getline(cin, s1);
cout << s1 << endl;
} void test_3()
{
string s1 = "ccc";
string s2 = "aaaaaaaa";
s2 = s1;
out (s2);
out (s2.size());
out (s1);
out (s1.size());
} void test_insert()
{
string s1 = "aaaaa";
s1.insert (s1.begin(), 's');
s1.insert (s1.end(), 's');
s1.insert (s1.begin() + (s1.end()-s1.begin()) / , );
out (s1);
} void test_erase()
{
string s1 = "abcdefghi";
// s1.erase(2, 3);
s1.erase(s1.begin(), s1.end());
out (s1.size());
out (s1);
} void test_replace()
{
string s = "abcdefghi";
s.replace(, , "rr");
s.replace(s.begin(), s.end()-, "rrr");
// s.replace(s.begin(), "rrr");
out (s);
} int main()
{
test_1 ();
test_2 ();
test_3 ();
test_insert ();
test_erase ();
test_replace ();
return ;
}
View Test Code