输入转移

描述:

输入一行字符。

将其中的所有有效转义字符转换为对应字符,并输出转换后的字符串。


有效转义字符的定义及转义规则:

1、本题的转义包括且仅包括 “\”(反斜杠)引起的转义。

2、本题的转义共分为两种:

第一种为 反斜杠与数字(小于128的非负整数)的组合,如 \117 为字符 'u' ;

第二种为 反斜杠与非数字字符的组合,表示忽略其原有一切意义,并直接输出该非数字字符。

3、 对于第一种转义,反斜杠应尽可能匹配更大的值,如 \122 应该匹配 ASCII值为 122 的字符 , 而 \1308 只能被理解为 字符'\13' 和 "08"的组合。

4、对于 单/双引号 内的字符(串),不进行转义处理。

输入:

 

一行字符串,以回车结尾。

输出:

 

对应的一系列字符。

输入样例1: 

123456789\10abc

输出样例1:

123456789
abc

输入样例2:

"There is no \'\\\' in this string",but there id one \'\\\'. 

输出样例2:

"There is no \'\\\' in this string ",but there is one'\'.

思路:

    就是读懂题意后模拟。

    

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 
 6 using namespace std;
 7 
 8 int main()
 9 {
10     
11     int tem=-1,f=0;
12     int dan=0,shuang=0;
13     char ss=getchar();
14     while(ss!='\n'&&ss!=-1)
15     {
16         if(ss<='9'&&ss>='0'&&f&&(!(shuang&1))&&(!(dan&1)))
17         {
18             if(tem==-1)tem=0;
19             tem=tem*10+ss-'0';
20             if(tem>=128)
21             {
22                 tem=tem/10;
23                 char ch=tem;
24                 cout<<ch;
25                 cout<<ss;
26                 tem=-1;f=0;
27             }
28             ss=getchar();continue;
29         }
30         if(f)
31         {
32             if(tem>=0)
33             {
34                 char ch=tem;
35                 cout<<ch;
36             }
37             else
38             {
39                 cout<<ss;
40                 f=0;
41                 ss=getchar();
42                 continue;
43             }
44             tem=-1;f=0;
45         }
46         if(ss=='"'&&(!f))
47         {
48             cout<<'"';
49             shuang++;
50             ss=getchar();
51             continue;
52         }
53         if(ss=='\''&&(!f))
54         {
55             cout<<'\'';
56             dan++;
57             ss=getchar();
58             continue;
59         }
60         if(ss=='\\'&&(!f)&&(!(shuang&1))&&(!(dan&1)))
61         {
62             f=1;
63             ss=getchar();
64             continue;
65         }
66         cout<<ss;
67         ss=getchar();
68     }
69    if(tem!=-1)
70    {
71         char ch=tem;
72         cout<<ch;
73    }
74     cout<<endl;
75     return 0;
76 }

 

posted @ 2018-10-24 16:12  liqgnonqfu  阅读(183)  评论(0编辑  收藏  举报