C++的那些坑(1)字符串.size()比较大小

C++的那些坑(1)字符串.size()比较大小

最近在用C++刷LeetCode,在第76题最小覆盖字串里遇到了问题,代码和题解“一模一样”,但输出一直是空,没有进入循环。几番查找发现问题定位在下面这两行代码:

	string s;
	int l = 0, r = -1, len = INT_MAX;
    while ( r < s.size()){
     	// ...
    }

仔细对照题解发现题解里是 while ( r < int( s.size() ))
震惊!字符串的size函数居然返回的不是整型吗!
查证后发现,size()返回的是 无符号整型
而我的 r 被定义为了 -1

但是为什么没有报错呢?

cout << (r < s.size());
// 0

cout了一下输出结果是0,也就是false了,所以才没有进入循环
后来又测试 s.length(),它的返回值也是 无符号整型

以后还是要先把长度赋值给int变量再做其他处理,另外还是要多多重视基础!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值