字符串排序--string类的使用
最近帮他们做了一个简单的c++的题目,以前做过,当时是借鉴的别人的代码,现在也忘得差不多了,不过思路还有,现在正好可以再温习一下。
题目要求如下:
先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串不多于一百个字符。 如果在输入过程中输入的一个字符串为“stop”,也结束输入。 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。如果存在多个字符串长度相同,则按照原始输入顺序输出。
输入格式:
字符串的个数,以及该组字符串。每个字符串以‘\n’结束。如果输入字符串为“stop”,也结束输入.
输出格式:
可能有多组测试数据,对于每组数据, 将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。
输入样例:
4
faeruhyytrjh tjytj
hsrthts hjnshtgfhs
stop
3
htrskbns
bsartanjsf tyjndyt
nsr jj jtey
输出样例:
faeruhyytrjh tjytj
hsrthts hjnshtgfhs
htrskbns
nsr jj jtey
bsartanjsf tyjndyt
好,下面先把代码贴出来
#include<iostream> using namespace std; void sort(string *a, int n);//sort函数进行排序 字串指针a 字串数量n int main(){
int n,i,j = ;
string b;
begin:
while(scanf("%d",&n)!=' '){
getchar(); //获取输入的n的值 注意它是读取单一字符的
string *p = NULL;//初始化指针
p=new string[n];//为指针分配动态空间
for(i = ;i < n; ++i){
//b = "\n"; 在下次使用时清除缓存
getline(cin,b);
if(b != "stop"){
p[j] = b;
j++;
}else{
break;
}
}
sort(p,j);
cout<<" "<<endl;
for(i = ;i < j;++i){
cout<<p[i]<<endl;
}
}
goto begin;
return ; } /**
*排序采用冒泡排序法
*/
void sort(string *a,int n){
int i,j;
string b;
for(i = ;i < n;++i){
for(j = ;j < n-i;++j){
if(a[j].size()>a[j + ].size()){//size 获取字串长度(大小)
b=a[j];
a[j]=a[j + ];
a[j + ]=b;
}
}
} }
这道题的思路其实不是很难,就是在实际操作的时候会遇到一些问题。
1、首先,在输入的时候,可以循环用cin输入,但是不可以用gets,因为gets无法以空格为结束来终止输入。
2、自我感觉使用快排会更快一点,但是鉴于现在输入的数据量的关系,冒泡排序也还可以。
3、在这段代码里我用到了getline,这就是比较偷懒的行为,建议不要过多使用它,多使用cin.getline,会更加灵活多变。
字符串排序--string类的使用的更多相关文章
- 全面深入介绍C++字符串:string类
http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类 ...
- 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类
4.1.String类的应用 class String类应用 { static void Main(string[] args) { string astring = "Now is The ...
- 字符串格式化-String类format方法
常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. format()方法有两种重载形式. 显示不同转换符实现不同数据类型到字符串的转换,如图所示: 测 ...
- C++字符串和string类介绍
一.C风格字符串 ◆ 1.字符串是用字符型数组存储的,字符串要求其尾部以'\0'作为结束标志.如: char string[ ]="C++ programming language&q ...
- Java字符串(String类)
定义方法: 1.String demo = "test"; 2.String demo = new String(); 3.String demo = new String(&qu ...
- C 风格字符串、string 类要点总结
1. C风格字符串 1.1 其它 头文件<cstring> 特殊性质:C风格字符串以空字符\0结尾 1.2 读取一行的区别 1.2.1 cin.getline(array1,n,char) ...
- JAVA里的字符串,String 类简单介绍
http://www.360doc.com/content/14/1107/23/17130779_423471141.shtml
- 第7章.字符串、String类和StringBuilder类
参考链接: https://www.runoob.com/csharp/csharp-string.html https://www.cnblogs.com/cang12138/p/7323709.h ...
- [Java初探04]__字符串(String类)相关
前言 接下来将暂时将重心偏移向实际操作,不在将大量时间花费在详细的知识点整理上,将会简略知识总结笔记的记录,加强实际练习的时间,实例练习篇也不再同步进行,我会将部分我觉得重要的源码更新在每节知识点后面 ...
随机推荐
- vue.js 精学记录
v-bind:class使用的方式: 1.对象与法::class="{'active':isActive}" 此时当isActive为true时,会拥有active 2.数组语法: ...
- Java第2次作业
我认为这一次的作业还是比较好的,对自己的学习有很大帮助.
- javascript 之 继承
1.传统方式--->原型链 (过多继承了没用的属性) Grand.prototype.lastname = 'zhang' function Grand(); } var grand = ne ...
- web过滤器
Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ht ...
- Web前端学习第一天
1.SQL注入攻击的发生 select username, email ,descl from users where id=1; 可能会被伪造成 1 union select password,1, ...
- Linux 配置SSH免密登陆
1.在hadoop01服务器上 通过ssh -keygen 生成公私钥 [ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa] 2.把公钥给hadoop02服务器 3. ...
- Android与Linux内核的对应关系
1. Android各版本和Linux版本对应关系 Android Version |API Level |Linux Kernel in AOSP ------------------------- ...
- 【转载】【原创】华硕F8TR笔记本更换主板及喇叭教程
转载地址:http://blog.sina.com.cn/s/blog_6241aaed0102w4e6.html [原创]华硕F8TR笔记本更换主板及喇叭教程 华硕AUSU F8TR笔记本 ...
- Beginning Math and Physics For Game Programmers (Wendy Stahler 著)
Chapter 1. Points and Lines (已看) Chapter 2. Geometry Snippets (已看) Chapter 3. Trigonometry Snippets ...
- springmvc的dispatchservlet初始化
初始化做的事情,处理下controller的映射关系 https://blog.csdn.net/qq_38410730/article/details/79426673