文本处理中的小细节

简介: 1.char还是uchar(unsigned char)   char在C/C++中占用1byte(即8bits)。   ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。

1.char还是uchar(unsigned char)

  char在C/C++中占用1byte(即8bits)。

  ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。标准ASCII码是7位二进制表示,表示128个字符(0~127),最高位是0。如 00110000(2) =48D=30H='0'。

  由于char能表示的范围是(-128~127),英文中使用了0~127号编码的字符(符号位为0,正数)。一个汉字占2byte,为了使得汉字的两个字节不与英文字母混淆,表示汉字的每个字节符号位都为1(负数)。

  在处理文本时,最好使用unsigned char(0~256),因为文本中可能会有含有特殊字符(不一定是标准ASCII),也就是读入的每个字符的ASCII码可能不在0~127之间。

  下面的程序输出字符的ASCII码:

 1 #include <iostream>
 2 using namespace std;
 3 int main ()
 4 {
 5     string str ("hi你好");    ///6个字节,每个中文占2个字节
 6     cout<<"Text:"<<str<<endl;
 7     for(int i=0;i<str.size();i++)
 8         printf("i=%d    c_c=%c      c_d=%d\n",i,str[i],(unsigned char)str[i]);
 9     return 0;
10 }

2.换行符号

  win和linux下面的换行符号不同。win下面的换行符是“\r\n”,linux下面的换行符是“\r”。

  使用下面的程序读取文件中的每一行并显示长度:

 1 #include <fstream>
 2 #include <iostream>
 3 #include <string>
 4 
 5 using namespace std;
 6 int main(int argc,char* argv[]){
 7     fstream fin(argv[1]);  ///参数为文件名
 8     string readline;
 9     while(getline(fin,readline)){  ///逐行读取,直到结束
10         cout<<readline<<"\t"<<readline.size()<<endl;
11     }
12     fin.close();
13     return  0;
14 }

 (1)win下面建立文件a_win.txt,在linux下面打开正常

  分别在win、linux下执行结果如下,可以看出长度差1(就是最后的“\r”):

  (2)linux下面建立文件a_unix.txt,在win下面打开没有换行

  分别在win、linux下执行结果如下,可以看出长度相同:

 

  可见,win和linux程序都可以识别'\n'为换行符。win下会多一个字符‘\r’。

 

相关文章
|
2月前
|
文件存储 iOS开发 MacOS
Python编程案例:文件查找并归类
Python编程案例:文件查找并归类
23 2
|
6月前
|
存储 自然语言处理 算法
编辑距离算法全解析:优化文本处理的关键技术
编辑距离算法全解析:优化文本处理的关键技术
|
7月前
|
机器学习/深度学习 人工智能 JSON
Prompt进阶系列1:LangGPT(从编程语言反思LLM的结构化可复用提示设计框架)
Prompt进阶系列1:LangGPT(从编程语言反思LLM的结构化可复用提示设计框架)
Prompt进阶系列1:LangGPT(从编程语言反思LLM的结构化可复用提示设计框架)
|
7月前
|
机器学习/深度学习 数据采集 人工智能
chatgpt生成文本的底层工作原理是什么?
chatgpt生成文本的底层工作原理是什么?
168 0
|
数据采集 搜索推荐 算法
十一、正则表达式详解:掌握强大的文本处理工具(三)
十一、正则表达式详解:掌握强大的文本处理工具(三)
算法入门几个有用的代码
算法入门几个有用的代码
ChatGPT的引申想法及其功能全介绍
ChatGPT的引申想法及其功能全介绍
|
机器学习/深度学习 存储 自然语言处理
1_文本处理与词嵌入
1_文本处理与词嵌入
121 0
1_文本处理与词嵌入
|
自然语言处理 算法
如何用3行代码简单实现文本情感分析
如何用3行代码简单实现文本情感分析
369 0
|
自然语言处理 编译器 网络安全
编译原理笔记2:词法分析基础与模式的形式化描述
词法分析,是词法分析器将源程序转化为线性记号流的过程。该过程中会对各种符号进行分类,比如将变量名换为标识符。 词法分析的含义: 规定词形成的规则,定义什么词是合法的; 根据规则识别输入的序列(词法分析),识别合法单词、指出非法的输入序列。
编译原理笔记2:词法分析基础与模式的形式化描述