今天拷贝了一段代码

struct    Test   
   {   
           Test(    int    )    {}   
           Test()    {}   
           void    fun()    {}   
   };   
   void    main(    void    )   
   {   
           Test    a(1);   
           a.fun();   
           Test    b();   
           b.fun();   
   }   

编译的时候报错

01.cpp:16:1: error: stray ‘\240’ in program
01.cpp:16:1: error: stray ‘\302’ in program
01.cpp:16:1: error: stray ‘\240’ in program
01.cpp:16:1: error: stray ‘\302’ in program
01.cpp:16:1: error: stray ‘\240’ in program
01.cpp: In function ‘int main()’:
01.cpp:14:4: error: request for member ‘fun’ in ‘b’, which is of non-class type ‘Test()’
b.fun();   

显然是字符的问题,

[root@ba face]# cat -v 01.cpp
#include <stdio.h>
struct TestM-BM- M-BM- M-BM-
{M-BM- M-BM- M-BM-
Test(int){}M-BM- M-BM- M-BM-
Test(){}M-BM- M-BM- M-BM-
void fun(){}M-BM- M-BM- M-BM-
};M-BM- M-BM- M-BM- intM-BM- main(void)M-BM- M-BM- M-BM-
{M-BM- M-BM- M-BM-
TestM-BM- a(1);M-BM- M-BM- M-BM-
a.fun();M-BM- M-BM- M-BM-
TestM-BM- b();M-BM- M-BM- M-BM-
b.fun();M-BM- M-BM- M-BM-
return 0;
}M-BM- M-BM- M-BM-

猜想M-BM-是Linux下的一个特殊字符,要怎么替换呢,想到用十六进制方式替换,那么首先查看这个特殊字符的十六进制表示,用od命令

[root@ba face]# od -tcx1 01.cpp
000000 # i n c l u d e < s t d i o .
23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e
000010 h > \n \n s t r u c t T e s t 302
68 3e 0a 0a 73 74 72 75 63 74 20 54 65 73 74 c2
000020 240 302 240 302 240 \n { 302 240 302 240 302 240 \n T e
a0 c2 a0 c2 a0 0a 7b c2 a0 c2 a0 c2 a0 0a 54 65
000030 s t ( i n t ) { } 302 240 302 240 302 240 \n
73 74 28 69 6e 74 29 7b 7d c2 a0 c2 a0 c2 a0 0a
000040 T e s t ( ) { } 302 240 302 240 302 240 \n v
54 65 73 74 28 29 7b 7d c2 a0 c2 a0 c2 a0 0a 76
000050 o i d 302 240 f u n ( ) { } 302 240 302 240
6f 69 64 c2 a0 66 75 6e 28 29 7b 7d c2 a0 c2 a0
000060 302 240 \n } ; 302 240 302 240 302 240 \n v o i d
c2 a0 0a 7d 3b c2 a0 c2 a0 c2 a0 0a 76 6f 69 64
000070 302 240 m a i n ( v o i d ) 302 240 302 240
c2 a0 6d 61 69 6e 28 76 6f 69 64 29 c2 a0 c2 a0
000080 302 240 \n { 302 240 302 240 302 240 \n T e s t 302
c2 a0 0a 7b c2 a0 c2 a0 c2 a0 0a 54 65 73 74 c2
000090 240 a ( 1 ) ; 302 240 302 240 302 240 \n a . f
a0 61 28 31 29 3b c2 a0 c2 a0 c2 a0 0a 61 2e 66
0000a0 u n ( ) ; 302 240 302 240 302 240 \n T e s t
75 6e 28 29 3b c2 a0 c2 a0 c2 a0 0a 54 65 73 74
0000b0 302 240 b ( ) ; 302 240 302 240 302 240 \n b . f
c2 a0 62 28 29 3b c2 a0 c2 a0 c2 a0 0a 62 2e 66
0000c0 u n ( ) ; 302 240 302 240 302 240 \n } 302 240 \n
75 6e 28 29 3b c2 a0 c2 a0 c2 a0 0a 7d c2 a0 0a
0000d0

可以看到这个特殊字符的十六进制表示是c2 a0,,用如下命令替换即可

[root@ba face]# sed -i 's/\xc2\xa0//g' 01.cpp
[root@ba face]# cat -v 01.cpp
#include <stdio.h>
struct Test
{
Test(int){}
Test(){}
void fun(){}
}; int main(void)
{
Test a(1);
a.fun();
Test b();
b.fun();
return 0;
}
[root@ba face]# g++ 01.cpp
01.cpp: In function ‘int main()’:
01.cpp:14:4: error: request for member ‘fun’ in ‘b’, which is of non-class type ‘Test()’
b.fun();

M-BM-的更多相关文章

  1. BM算法和Sunday快速字符串匹配算法

    BM算法研究了很久了,说实话BM算法的资料还是比较少的,之前找了个资料看了,还是觉得有点生涩难懂,找了篇更好的和算法更好的,总算是把BM算法搞懂了. 1977年,Robert S.Boyer和J St ...

  2. windbg-bp、 bm、 bu、 bl、 bc、 ba(断点、硬件断点)

    bp bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction . 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对 ...

  3. BM算法  Boyer-Moore高质量实现代码详解与算法详解

    Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...

  4. hrbustoj 1551:基础数据结构——字符串2 病毒II(字符串匹配,BM算法练习)

    基础数据结构——字符串2 病毒IITime Limit: 1000 MS Memory Limit: 10240 KTotal Submit: 284(138 users) Total Accepte ...

  5. BM串匹配算法

    串匹配算法最常用的情形是从一篇文档中查找指定文本.需要查找的文本叫做模式串,需要从中查找模式串的串暂且叫做查找串吧. BM算法好后缀规则 公式: 对于长度为m的模式串P,在i处失配时,模式串向前滑动的 ...

  6. [转] 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽

    字符串模式匹配算法——BM.Horspool.Sunday.KMP.KR.AC算法一网打尽 转载自:http://dsqiu.iteye.com/blog/1700312 本文内容框架: §1 Boy ...

  7. LaTeX 标题中使用 \bm 命令与 hyperref 的冲突

    问题 当使用 hyperref 宏包时,在标题中使用 \bm 为数学符号加粗会出现错误 \documentclass{article} \usepackage{bm} \usepackage{hype ...

  8. 字符串匹配算法——KMP、BM、Sunday

    KMP算法 KMP算法主要包括两个过程,一个是针对子串生成相应的“索引表”,用来保存部分匹配值,第二个步骤是子串匹配. 部分匹配值是指字符串的“前缀”和“后缀”的最长的共有元素的长度.以“ABCDAB ...

  9. 字符串匹配算法-BM

    在用于查找子字符串的算法中,BM(Boyer-Moore)算法是当前有效且应用比较广泛的一种算法,各种文本编辑器的“查找”功能(Ctrl+F),大多采用Boyer-Moore算法.比我们学习的KMP算 ...

  10. 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽

    字符串模式匹配算法——BM.Horspool.Sunday.KMP.KR.AC算法一网打尽 本文内容框架: §1 Boyer-Moore算法 §2 Horspool算法 §3 Sunday算法 §4 ...

随机推荐

  1. connection holder is null新增解决方案(2018-06-02)

    最近在做Java后台的项目,用到了druid数据库连接池,阿里出品,肯定是精品的意思咯,这也是我们老大搭建的框架,我就站在前人的肩膀上飞翔了.先前在一个事物里,使用了多条数据库操作,都是正常的,但是前 ...

  2. Yii2设计模式——Yii2中用到哪些设计模式?

    "Yii2设计模式"包含了两个方面的内容:1.设计模式,2.Yii2框架. <设计模式>一书虽然以JAVA语言来表达设计模式的思想,但是设计模式远不限制于某一种特定的语 ...

  3. Ant Design按需加载

    不eject情况下配置antd按需加载 1.安装 react-app-rewired yarn add react-app-rewired 2. 项目根目录下新建 config-overrides.j ...

  4. 腾讯云申请SSL证书与Nginx配置Https

    0x00 为什么要安装证书 信息传输的保密性 数据交换的完整性 信息的不可否认性 交易者身份确定性 如今各大浏览器厂商不断推进Https安全访问强制性要求,为了避免以后网站数据量增多时安装证书造成不必 ...

  5. android WebView技术笔记(存储技术)

    作为刚刚开始工作的新手程序猿,各种知识还不算熟练,所以将学习到的知识记录一下以免以后忘记. WebView加载h5的知识现在可以说非常的常用,通过加载h5的网页可以在不更新app的情况下来更新app的 ...

  6. 荣耀7.0系统手机最简单激活Xposed框架的步骤

    对于喜欢玩手机的小伙伴来说,很多时候会使用到Xposed框架及各类功能彪悍的模块,对于5.0以下的系统版本,只要手机能获得Root权限,安装和激活Xposed框架是比较简便的,但随着系统版本的不断更新 ...

  7. nginx+uwsgi部署django项目

    1.django项目部署前需要生成admin的静态资源文件 (1)生成admin的静态资源文件 # 关闭debug模型 DEBUG = False # 允许所有域名访问 ALLOWED_HOSTS = ...

  8. python使用rabbitMQ介绍五(话题模式)

    一.模式介绍 话题模式(Topic)基本思想和路由模式是一样的,只不过路由键支持模糊匹配,符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词 话题模式相当于消息的模糊匹配,或者按照正则匹配.其中 ...

  9. Docker-Docker-compose应用

    Docker-compose是用来定义和运行多容器应用的工具,它是独立于docker存在的,需要单独安装.实际应用场景中,我们的应用可能被打包运行在不同的容器里面,例如一个常规的web应用可能会涉及到 ...

  10. Go语言打造以太坊智能合约测试框架(level3)

    传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...