warning: C4305从“int”到“char” 截断

  有时候想打印出一些特殊符号来组成图像的时候,会遇到这种问题:特殊字符无法赋值给char型字符。这时候有两种解决办法。

  方法一:将char型改为string型。(#include <string>)

  一般来说,没办法赋值给char型是因为这个特殊符号虽然看上去只有一个字符,但实际上它所占的空间是一个字符串。如下图所示:

   将普通字符以字符的形式赋值给s1,特殊字符以字符的形式赋值给s2,然后再将特殊字符以字符串的形式赋值给s3。运行结果却如下图:


  s1、s3成功输出,s2却被告知 从“int”到“char” 截断,可见,字符是可以赋值给string型的,特殊符号★也可以以字符串的形式赋值给string。所以,这个特殊符号应该是一个字符串,而不是一个字符。

  但是,一般用到特殊字符都是用char型的二维数组来组成图像的,特地将其中的几个char型字符换成string型字符串,不是不行,但是太麻烦了。于是还有第二种方法。

  方法二:用ASCII码。

  有人会说了,没用,ASCII码表里没有特殊字符。的确没有,但是扩展ASCII码表里面有特殊字符,尽管不是很全,但是常用的特殊字符还是有包含几个的。话不多说,开始操作。

  首先,查找该字符在扩展ASCII码表里的值。

  


  然后用其ASCII码值代替字符赋值给char型字符变量。


  然后调试。这时候你会发现,出现的窗口,要么什么都没有,要么就是特殊字符被一些奇怪的中文代替了。这时候鼠标在调试窗口的标题栏单击右键,选择“默认值”,将里面的默认代码页改成437-(OEM/美国)即可。



  上面第一图就是改成美国代码页后的效果。



相关连接:

扩展ASCII码对照表

参考文章:

ASCII码128-255扩展编码显示奇葩中文的原因(by 残烛之泪)

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值