文本处理中的小细节

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

 

相关文章
|
数据可视化 定位技术
GIS空间分析 三维分析2 TIN创建与三维可视化
本文中,我将带你了解如何在ArcGIS中使用DEM数据制作三维模型
898 0
|
7月前
|
弹性计算 运维 安全
轻量 vs ECS:阿里云轻量应用服务器与ECS云服务器有什么区别?2026最新手动整理
阿里云轻量应用服务器适合个人开发者、学生搭建博客、测试环境等轻量场景,操作简单、成本低;ECS功能全面、弹性强,支持高并发、集群部署,适合企业级应用。选型关键看业务规模与技术需求。
430 4
|
C++
基于C++的简易计算器设计与实现
基于C++的简易计算器设计与实现
1026 3
|
6月前
|
人工智能 算法 搜索推荐
从“竞价内卷”到“算法裁决”:医疗行业在生成式搜索时代的流量重构路径
爱搜光年(AISO)提出医疗GEO(生成式引擎优化)体系,直击竞价内卷、流量欺诈、算法黑箱、ROI崩塌等八大痛点。通过向量锚定、推荐度管理、可见度重构与数字信誉资产构建,助力医疗机构适配生成式搜索裁决逻辑,实现自然流量跃升与信任重建。(239字)
416 1
|
8月前
|
语音技术
阿里云产品十一月刊来啦
阿里云百炼多模态与语音识别模型全面升级,千问APP公测上线免费向用户开放|产品十一月刊
512 11
阿里云产品十一月刊来啦
|
8月前
|
人工智能 运维 自然语言处理
朝阳永续基于阿里云 Milvus 构建金融智能投研产品“AI 小二”
朝阳永续通过采用阿里云向量检索服务 Milvus 版,构建了金融级智能投研引擎“AI 小二”,实现了对海量公告、研报和财报数据的高效语义检索。在智能问答、管理层表述分析等场景中,查询响应速度提升超 10 倍,系统稳定性显著增强,运维成本降低 80%,全面提升了投研效率与用户体验。
1047 0
|
编解码 Cloud Native 算法
通义万相:视觉生成大模型再进化
通义万相是阿里云推出的视觉生成大模型,涵盖图像和视频生成。其2.0版本在文生图和文生视频方面进行了重大升级,采用Diffusion Transformer架构,提升了模型的灵活性和可控性。通过高质量美学标准和多语言支持,大幅增强了画面表现力。此外,视频生成方面引入高压缩比VAE、1080P长视频生成及多样化艺术风格支持,实现了更丰富的创意表达。未来,通义万相将继续探索视觉领域的规模化和泛化,打造更加通用的视觉生成大模型。
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
机器学习/深度学习 算法 数据可视化
基于QLearning强化学习的机器人避障和路径规划matlab仿真
本文介绍了使用MATLAB 2022a进行强化学习算法仿真的效果,并详细阐述了Q-Learning原理及其在机器人避障和路径规划中的应用。通过Q-Learning算法,机器人能在未知环境中学习到达目标的最短路径并避开障碍物。仿真结果展示了算法的有效性,核心程序实现了Q表的更新和状态的可视化。未来研究可扩展至更复杂环境和高效算法。![](https://ucc.alicdn.com/pic/developer-ecology/nymobwrkkdwks_d3b95a2f4fd2492381e1742e5658c0bc.gif)等图像展示了具体仿真过程。
943 0