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

C++ STL之string常用指令的更多相关文章

  1. C++ STL之map常用指令

    只记载本人在ACM中常用的函数. map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力. map内部为一颗 ...

  2. 【STL】string 常用函数

    string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...

  3. C++ STL之pair常用指令

    只记载本人在ACM中常用的函数. pair<first, second>,将两个数据组合成一个数据.在其他stl(如map),函数需要传回两个值时可能会用到. 1.初始化 #include ...

  4. C++ STL之vector常用指令

    只记载本人在ACM中常用的函数. vector,相当于动态数组,数组大小可变.声明vector以后,自动在内存中分配一块连续的内存空间进行数据存储. vector在内部进行插入.删除操作时间复杂度O( ...

  5. C++ STL之set常用指令

    set,关联容器,元素不允许有重复,数据被组织成一棵红黑树,以牺牲插入和删除元素的效率换来了查找元素的高效率(O(logN)). 1.初始化 set<int> st; 2.begin返回第 ...

  6. Redis常用指令之string、list、set、zset、hash

    Redis之五大类型常用指令 redis的一些小知识 redis服务器端口默认是6379 在编译完成后的bin目录下启动服务端:redis-server 客户端连接操作:redis-cli -h lo ...

  7. 7. Buffer_包描述文件_npm常用指令_fs文件读写_模块化require的规则

    1. Buffer 一个和数组类似的对象,不同是 Buffer 是专门用来保存二进制数据的. 特点: 大小固定: 在创建时就确定了,且无法调整 性能较好: 直接对计算机的内存进行操作 每个元素大小为1 ...

  8. Linux常用指令【转载】

    [收藏]Linux常用指令[转载] $ 命令行提示符 粗体表示命令 斜体表示参数 filename, file1, file2 都是文件名.有时文件名有后缀,比如file.zip command 命令 ...

  9. (转)Linux最常用指令及快捷键 Linux学习笔记

    Linux最常用指令及快捷键 Linux学习笔记 原文:http://blog.csdn.net/yanghongche/article/details/50827478 [摘自 鸟叔的私房菜]--转 ...

随机推荐

  1. 从今天开始学习C#啦

    此博客为证,在下从今天开始学习C#,并把心得体会记录下来.

  2. OD: RPC - MS06040 & MS08067

    RPC 漏洞简介 Remote Procedure Call,分布式计算中常用到的技术.两台计算机通信过程可以分为两种形式:一种是数据的交换,另一种是进程间通信.RPC 属于进程间通信. RPC 就是 ...

  3. 判断在Android手机内, 页面重新刷新一次

    <script type="text/javascript"> var UA = navigator.userAgent.toLowerCase(); //androi ...

  4. Linq101-CustomSequence

    using System; using System.Collections.Generic; using System.Linq; namespace Linq101 { class CustomS ...

  5. SQL 里面的COALESCE函数

    在SQL里面除了is null 还有这样一个还用的方法 COALESCE(值[, ...]) select COALESCE(NULL,NULL,'AAAA') -> 'AAAA' 意思是前面的 ...

  6. 解决第三方DLL没有强签名

    -----转载:http://blog.csdn.net/zyming0815/article/details/5939090 创建一个新的随机密钥对:sn -k myTest.snk 第一步: 将D ...

  7. for update被锁定解锁

     查找被锁定的表,用户,session:SELECT object_name, machine, s.sid, s.serial#FROM gv$locked_object l, dba_object ...

  8. IOS中截屏的实现,很简易的方法

    // 添加QuartzCore.framework库 #import <QuartzCore/QuartzCore.h> -(void) screenShot { // 截屏 UIGrap ...

  9. cache—主存—辅存三级调度模拟

    近日,在体系结构的课程中,老师留了一个上机作业,为cache—主存—辅存三级调度模拟,要求如下: 实现三级存储体系的模拟调度程序 描述:CPU在cache访问数据块,若命中给出对应的cache实地址, ...

  10. Google Calendar(日历)设置农历生日提醒

    Generate birthday dates base on lunar birthdays for google calendar import Can be used for notifying ...