string的empty和size操作
string的empty和size操作
? ? ? ? empty函数:根据string对象是否为空返回一个对应的bool值。
? ? ? ? empty是string的一个成员函数。调用该函数只要使用一下点函数指明哪个对象需要执行empty函数就可以了。
????????例:
while(getline(cin,line))
{
if(!line.empty())
{
cout<<line<<endl;
}
}
????????line就是string对象,所以使用line.empty()
? ? ? ? 意思是:每次读取一整行,遇到空行直接跳过输出。
? ? ? ? 其中line非空时,line.empty返回false值(0),反之返回true值(1)
? ? ? ? 使用if(!line.empty())的意思就是
line非空时line.empty返回0,!a为真,if条件成立,输出line。
line为空时line.empty返回1,!a为假,if条件不成立,不输出line。
? ? ? ? size函数:返回string对象的长度(即string对象中字符的个数)。
例:
#include<iostream>
using namespace std;
int mian()
{
while(getline(cin,line))
{
if(line.size()>100)
cout<<line<<endl;
}
return 0;
}
?每次输出一整行,但是只输出超过100个字符的行。
string::size_type类型
? ? ? ? 对于size函数来说,返回的是一个string::size_type类型的值。string类及其它大多数标准库类型都定义了几种配套的类型。这些配套类型体现了标准库类型与机器无关的特性。即使我们不知道srting::size_type类型的细节,但是我们知道:它是一个无符号类型的值,并且能够存放下任何一个string对象的大小。其中所有用于存放string类型的返回变量都是string::size_type类型的。
? ? ? ? 在C++11新标准中,允许编译器通过auto或者decltype来推断变量的类型:
auto len = line.size();
? ? ? ? ?len的类型是string::size_type
? ? ? ? 由于size函数返回的是一个无符号整形数,所以在表达式中混用带符号数和无符号数可能会产生意想不到的结果。
? ? ? ? 例:
? ? ? ? 设n是一个具有负值的int,这表达式s.size()<n的判断结果几乎是true。
因为负值n会自动转换成一个比较大的无符号值。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!