文档章节

string类型与char*字符串

lench
 lench
发布于 2015/09/22 21:26
字数 557
阅读 24
收藏 0

cf:

A. Way Too Long Words

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Sometimes some words like "localization" or "internationalization" are so long that writing them many times in one text is quite tiresome.

Let's consider a word too long, if its length is strictly more than 10 characters. All too long words should be replaced with a special abbreviation.

This abbreviation is made like this: we write down the first and the last letter of a word and between them we write the number of letters between the first and the last letters. That number is in decimal system and doesn't contain any leading zeroes.

Thus, "localization" will be spelt as "l10n", and "internationalization» will be spelt as "i18n".

You are suggested to automatize the process of changing the words with abbreviations. At that all too long words should be replaced by the abbreviation and the words that are not too long should not undergo any changes.

Input

The first line contains an integer n (1 ≤ n ≤ 100). Each of the following n lines contains one word. All the words consist of lowercase Latin letters and possess the lengths of from 1 to 100 characters.

Output

Print n lines. The i-th line should contain the result of replacing of the i-th word from the input data.

Sample test(s)

input

4
word
localization
internationalization
pneumonoultramicroscopicsilicovolcanoconiosis

output

word
l10n
i18n
p43s

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main()
{
    int n,length;
    char*ch,ch_first,ch_last;
    ch=new char[2];
    string str;
    cin>>n;
    while(n--)
    {
        cin>>str;
        length=str.size();
        if(length>10)
        {
            sprintf(ch,"%d",length-2);
            ch_first=str[0];ch_last=str[length-1];
            str.clear();
            str.insert(str.end(),ch_first);
            str+=ch;//不知道为什么这个表达式居然是对的?ch(char型指针)是c数组?但是末尾没有没有'\0'?难道是                     //隐含的类型转化?
            str.insert(str.end(),ch_last);
        }
        cout<<str<<endl;
        str.clear();
    }
    delete[]ch;
}

勉强把这个程序写出来了,但是还是有如下疑问的:

str+=ch;//不知道为什么这个表达式居然是对的?ch(char型指针)是c数组?但是末尾没有没有'\0'?难道是                     //隐含的类型转化?

借用曙光女神的一句话,黎明就在眼前(不小心暴露了。。。)。


15minutes later...

第二次修改后的代码,刚刚反思出来的!!!

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main()
{
    int length;
    char*ch;
    ch=new char[2];
    string str;
    cin>>n;
    while(n--)
    {
        cin>>str;
        length=str.size();
        if(length>10)
        {
            sprintf(ch,"%d",length-2);
            str=str.replace(1,length-2,ch);
        }
        cout<<str<<endl;
        str.clear();
    }
    delete[]ch;
}

c++里面的string 太强大了,只怪自己自前没有记住,以至于在不久前打ccf时吃了大亏。

有种要把string打印出来的冲动。。。

© 著作权归作者所有

lench
粉丝 2
博文 5
码字总数 4592
作品 0
长春
私信 提问
matlab字符串连接(多个字符串)的经验

参考 matlab中字符串连接的3种方法 文章,实验遇到的一些小白问题,如有问题希望大神们给予指导。 Matlab中,两个或多个字符串连接常用的三种方法,如下: 背景知识: 1、char 和 string 区别...

XDavisX
2018/12/07
0
0
CString/string 区别及其转化

CString/string 区别及其转化 利用MFC进行编程时,我们从对话框中利用GetWindowText得到的字符串是CString类型,CString是属于MFC的类。而一些标准C/C++库函数是不能直接对CString类型进行操...

geek_loser
2016/03/29
41
0
网上搜罗整理关于c_str(),mark一下下

就是把 string 转成 char string str="yoooo";char a=str.c_str(); //--------------------------------------------------------------------------- #include <string> #include <cstring>......

Industryy
2015/01/17
32
0
Java String 类学习笔记

String 类是在java.lang包中的一个工具类;所有String _ (StringBuffer /StringBuilder) 也都是 java.lang 包中的。 输入一个字符串的写法: Scanner scanner = new Scanner(System.in);Str...

hellation_
04/11
11
5
数组、字符串、集合

数组与集合的转换、数组与字符串的转换 ========数组变集合 String[] arr = {"abc","cc","kkkk"}; //把数组变成list集合有什么好处? /* 可以使用集合的思想和方法来操作数组中的元素。 注意...

花开半夏qb
2017/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

全球第一时间响应:Rancher发布2.3.1,支持K8S CVE修复版本

北京时间2019年10月17日,Kubernetes发布了新的补丁版本,修复了新近发现的两个安全漏洞:CVE-2019-11253和CVE-2019-16276。Rancher第一时间响应,就在当天紧随其后发布了Rancher v2.3.1和R...

RancherLabs
6分钟前
1
0
EMQ X 规则引擎系列 (八)桥接消息到 MQTT Broker

桥接概念 桥接是一种连接多个 EMQ X 或者其他 MQTT 消息中间件的方式。不同于集群,工作在桥接模式下的节点之间不会复制主题树和路由表。桥接模式所做的是: 按照规则把消息转发至桥接节点;...

EMQX
10分钟前
3
0
《2019年上半年云上企业安全指南》详解安全建设最易忽视的问题!

《2019年上半年云上企业安全指南》是阿里云基于对云安全中心监测到的威胁情报进行分析,形成的一份云上企业安全建设指南。通过对云上企业安全建设现状及多维度威胁情报的分析,得出企业安全建...

开源中国小二
10分钟前
1
0
一天之际在于晨之KMP算法

(我觉得不需要明白原理,应该是在面试或者工作的时候,该想到用什么算法以及之后直接赋值我这里的代码就好了) 下面的情况我们第一时间考虑想到的是用KMP算法。 情况一:// ts字符串是否包...

木九天
13分钟前
1
0
如何通过反射机制创建对象?

// 获取类路径的完全限定名 String classname = "test.Interval"; // 通过类的完全限定名获取类对象 Class pClass = Class.forName(classname); // 通过类对象获取类的构造器对象 Constructo......

happywe
13分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部