文本处理中的小细节

简介: 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’。

 

相关文章
|
存储 数据格式 计算机视觉
MATLAB读取图片并转换为二进制数据格式
MATLAB读取图片并转换为二进制数据格式
308 1
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
3294 0
|
存储 自然语言处理 算法
高维向量压缩方法IVFPQ :通过创建索引加速矢量搜索
向量相似性搜索是从特定嵌入空间中的给定向量列表中找到相似的向量。它能有效地从大型数据集中检索相关信息,在各个领域和应用中发挥着至关重要的作用。
629 0
|
应用服务中间件
快速解决idea启动项目报错:Unable to open debugger port(127.0.0.1:58950):java.net.SocketException“socket closed
快速解决idea启动项目报错:Unable to open debugger port(127.0.0.1:58950):java.net.SocketException“socket closed
2479 0
|
自然语言处理 数据可视化 API
优化采样参数提升大语言模型响应质量:深入分析温度、top_p、top_k和min_p的随机解码策略
本文详细解析了大语言模型(LLM)的采样策略及其关键参数,如温度和top_p。LLM基于输入提示生成下一个标记的概率分布,通过采样策略选择标记并附回输入,形成循环。文章介绍了对数概率(logprobs)、贪婪解码、温度参数调整、top-k与top-p采样等概念,并探讨了min-p采样这一新方法。通过调整这些参数,可以优化LLM输出的质量和创造性。最后,文章提供了实验性尝试的建议,帮助读者在特定任务中找到最佳参数配置。本文使用VLLM作为推理引擎,展示了Phi-3.5-mini-instruct模型的应用实例。
830 6
|
开发框架 前端开发 JavaScript
跨平台应用开发技术的深度探讨
【7月更文挑战第26天】 跨平台应用开发技术已成为当前软件开发领域的重要趋势。通过合理使用跨平台开发框架和工具,开发者可以更加高效地构建适用于多个平台的应用程序,提高开发效率和用户体验。然而,跨平台开发也面临着性能优化、兼容性问题等挑战,需要开发者不断学习和实践,以应对不断变化的市场需求和技术挑战。
|
存储 缓存 安全
探索现代操作系统的内存管理机制
【7月更文挑战第15天】在数字时代的脉络中,操作系统作为计算机硬件与软件之间的桥梁,承担着至关重要的角色。其中,内存管理是操作系统核心功能之一,它直接关系到系统性能与稳定性。本文将深入探讨现代操作系统中内存管理的基本原理、关键技术以及面临的挑战,旨在为读者提供对内存管理机制深层次的理解,并展望其未来的发展方向。
151 0
|
应用服务中间件 nginx
解密Nginx的高性能魔法:事件驱动与异步非阻塞模型
总之,Nginx的高性能魔法基于事件驱动和异步非阻塞模型,使其能够处理大量并发连接,同时保持低系统资源消耗。这是Nginx在处理Web请求时出色性能的关键因素。
344 1
|
SQL Java 关系型数据库
mysql实现不存在就插入,存在就更新,sql直接执行和mybatis实现的坑!
insert into ... on duplicate key update 字段=新值, mybatis执行报错: SQLException: No value specified for parameter 4,你甚至惊奇的发现你只传了3个参数却提示没找到第4个参数......亲身经历什么叫一个bug找一天
633 0