C/C++语言拾遗(二)--单字节字符串

我们编写的简单C/C++程序,大部分任务是做字符串的处理、呈现。字符串的操作方法有很多,C中多以char数组为处理对象,C++中则是封装了字符串类和文件类供我们使用。以下总结了最近一段时间在字符串处理上的一些小tips。​​

一、ASCII码

1、NULL的ASCII码为0,因此有些函数赋值NULL和0一样。

2、‘\0’ASCII码也为0,为字符串最后一个字符。

3、‘ ’空格字符的ASCII码为32,ASCII打印字符的第一个。​

4、标准ASCII码使用7位二进制表示,最高位固定为0。​​

二、字符串操作

因为char数组不以‘\0’结尾,所以连接两个char型数组无法直接使用strcat等函数,可以采用sprintf函数​​​​

msdn格式化输出符号总表

 

vs中使用sprint会报错,提示使用sprintf_s

因为理论上sprintf_s更安全,sprintf_s 设置了输出buffer的大小,会检查格式化字符的合法性。而sprintf只会检查是否为空指针(如果目标空间小,可能写入越界)。

数字格式化为字符串

% 4d 位整数,不够则左端补空格   %-4d右边补空格

% 4X  大写16进制​显示,四位左端补零   %-4x小写16进制显示,右端补空格​​

十六进制默认补码存储,如果反向读出,需要自己把握正负。

比如sprintf(s,"x",-1)​   (s="FFFF")

如果通过sscanf()读取格式化的字符串中的数据​​

int num;   sscanf(s,"%d",num)   (num=65535)​

因为对于计算机来说,以两个字节存储-1和65535是一样的​

如果num有负数,那么可以通过判断num>32768来判断是否为负

%f默认六位小数,可以%.3f设置保留三位​

 

数字转为字符串

 

字符串读出​

sscanf

 

三、C++中的Cstring类

字符串内容查找​

Cstring.find

将CString内容读出到char*可以简单使用​

char s[100];​​

Cstring dog("wangwang");

sprintf(s,"%S",dog); //只是简单的写法,可能存在宽字节和单字节的问题,导致s不正常

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值