今天拷贝了一段代码

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. 基础设施DevOps演进之路

    Related Links:Zuul  https://github.com/Netflix/zuulCAT     https://github.com/dianping/cat Apollo  h ...

  2. 怎么从Linux服务器上下载超过4G的文件?

    使用sz命令下载文件时,超过4G下载不了,如何下载呢? 本文介绍的方法是先对该文件进行拆分,拆分成多个小于4G的文件,然后分别下载,下载到本地后再进行合并或直接解压,具体操作如下: 1.分拆为多个文件 ...

  3. Linux下安装使用Redis

    cd /usr/local/src   //进入src目录  wget http://download.redis.io/releases/redis-4.0.1.tar.gz  //下载到src   ...

  4. Handler,Looper,MessageQueue流程梳理

    目的:handle的出现主要是为了解决线程间通讯. 举个例子,android是不允许在主线程中访问网络,因为这样会阻塞主线程,影响性能,所以访问网络都是放在子线程中执行,对于网络返回的结果则需要显示在 ...

  5. 在Windows Phone 8.1中使用Sqlite数据库

    前言 我的工作目前不涉及到Windows phone的开发,但是业余时间也开发过几款app.以前由于各种条件的限制,只接触到WP8.0设备的app开发. 最近几个月开始将WP8的应用迁移到WP8.1, ...

  6. python 验证码识别库pytesseract的使用

    笔者环境 centos7 python3 pytesseract只是tesseract-ocr的一种实现接口.所以要先安装tesseract-ocr(大名鼎鼎的开源的OCR识别引擎). 依赖安装 yu ...

  7. PIC单片机基础1

    1.PIC单片机总线结构——哈佛结构:即指令和数据空间是完全分开的,所以与常见的微控制器不同的一点是,程序和数据总线可以采用不同的宽度.以PIC16F684单片机为例,数据总线是8位的,但指令总线位数 ...

  8. [转]Lua和Lua JIT及优化指南

    一.什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-T ...

  9. Agent Job相关的系统表

    参考: http://www.cnblogs.com/CareySon/p/5262311.html msdb中,有三张与Agent Job相关的系统表,需要了解一下 msdb.dbo.sysjobs ...

  10. 苹果手机对网页上样式为position:fixed的弹窗支持不好的解决办法

    在Web页面上,如果想模拟对话框效果,一般会给div元素添加position:fixed的样式来实现,然后给背景添加一个半透明的遮罩.如: .fixedDiv { position: fixed; t ...