c++中空字符串解释为True的困惑
发布日期:2021-06-29 16:00:21
浏览次数:2
分类:技术文章
本文共 790 字,大约阅读时间需要 2 分钟。
首先我们看这样这个问题
int main ( ){ if ("") cout << "hello"; // executes! return 0;}
这对于其他非c++的程序员来说是很困惑的。为什么空的字符串是True?
这个问题其实归根到底是NULL与空字符串的区别。
空字符串实际上是const char[1]
,里面包含了\0
字符,这不是NULL,自然是True。
那么c++中到底什么表示True,什么表示False呢?
- A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to a prvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to false; any other value is converted to true. A prvalue of type std::nullptr_t can be converted to a prvalue of type bool; the resulting value is false.
上面摘自c++11草案中的描述。也就是0,空指针或空成员指针都为false,除此以外都是true。显然空字符串都不是上面的三者之一。
回顾上面程序的代码,其实这个代码的写法也是不好的,因为字符串不是一个布尔类型,把它当作布尔类型去使用,这本身就是不好的。比较好的做法是
#includestd::string str = "";if(!str.empty()){}
而且这是c++98就有的特性了。
转载地址:https://coordinate.blog.csdn.net/article/details/79392193 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月21日 08时06分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【转】EasyUI 验证
2019-04-29
Django实战---商城购物车的增删改、显示和合并购物车
2019-04-29
Django项目实战----添加支付宝支付
2019-04-29
DRF框架---前言(简单使用)
2019-04-29
字符串外面是b“ “的转换 -亲测有效
2019-04-29
单通道和多通道卷积
2019-04-29
npy文件和pkl文件的保存和读取
2019-04-29
买卖股票的最佳时机
2019-04-29
AUC粗浅理解笔记记录
2019-04-29
torch 模型运行时间与forward没对应的可能原因
2019-04-29
JavaScript 的addEventListener() 事件监听详解!
2019-04-29
上传图片到阿里云OSS和获取上传图片的url的详解 !
2019-04-29
Kafka为什么这么快?
2019-04-29
Java 生产者和消费者面试题
2019-04-29
生产者消费者问题
2019-04-29
本机电脑连接虚拟机redis失败解决方法
2019-04-29
DM365 应用层gpio控制
2019-04-29
linux i2c子系统abc
2019-04-29
CSS3 帧动画(Sprite,直译叫雪碧图)
2019-04-29