C++ string的相关操作

刚在杭电oj上做了个题目,想到用字符串string 的一些相关操作, 在这里记一下

这是那个题目描叙

排序

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 70918    Accepted Submission(s): 21780


Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。

你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。

 

Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。  

输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
 

Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
 

Sample Input
 
      
0051231232050775
 
Sample Output
 
      
0 77 12312320
 

Source
个人整理的string 的一些相关笔记:
读取整行字符串(带空格):  
string n;
getline(cin,n);


头文件 #include <string>
声明一个字符串 st: string st;

拷贝构造函数生成st的复制字符串 s: string s(st);


将 st 的从第n+1个字符串开始到结束复制到a: string a(st,n);

复制指定位置n+1开始并指定复制长度 m: string b(st,n,m);


生成一个为 n 个 字符'c'的字符串: string c(n,'c');  //n int型


生成一个字符串ch: char ch[]={"abcdefg123"};
将ch的指定区间内的字符复制到d字符串: string d=(ch+x1,ch+x2); //x1 x2 int型
( x1 到 x2   不包括 x1 包括 x2  长度:x2-x1)


  使用assign() 函数:
string st1="abcde132";
string st2="opqrst321";
string st3,st4; //声明字符串


st3.assign(st1,5,3); //"132"  从st1第 6 个开始长度为3的字符串 
st4.assign(st2,2,string::npos); //"qrst321"  从st2第3个开始 直到结束

st1.swap(st2); //交换两个字符串的内容;

  使用+=,append(),push_back() 在尾部添加字符:
string s;
s+=st1; //直接将字符串st1加到s上


s.append(st1,2,5); //将字符串st1的第3个开始长度为5的字符串加到s
s.append(st2,2,string::npos); //与前同 ( 3~ 结尾)
s.append(5,'c'); //将5个'c'字符加到s上


  使用insert() 插入字符:  指定一个安插位置的索引, 被插入的字符串放在该索引后面;
s.insert(n,st); 从第 n+1个开始插入st字符串


  erase删除字符:
s.erase(2,3); //从第三个字符(s[2])开始 删除3个字符


  其他操作: 
返回字符串长度: s.length();   s.size();
判断是否为空: s.empty(); //返回0 1
利用迭代器访问元素: string::iterator it=s.begin;it!=s.end();it++

猜你喜欢

转载自blog.csdn.net/hudaJY/article/details/80865924
今日推荐