我的代码有这部分被扔我一个错误字符串操作追加一个字符串本身
for(int i=0;i<100;i++)
{
s=s+",";
cout <<"string length is now "<<s.length<<endl;
}
我只是一遍又一遍100倍追加相同的字符串本身。 错误是:
第23行:错误:取地址的绑定函数std :: basic_string,std :: allocator> :: length()const。
有人可以告诉我我在做什么错吗?
我的代码有这部分被扔我一个错误字符串操作追加一个字符串本身
for(int i=0;i<100;i++)
{
s=s+",";
cout <<"string length is now "<<s.length<<endl;
}
我只是一遍又一遍100倍追加相同的字符串本身。 错误是:
第23行:错误:取地址的绑定函数std :: basic_string,std :: allocator> :: length()const。
有人可以告诉我我在做什么错吗?
应该s.length()
,不s.length
:
cout <<"string length is now "<< s.length() <<endl;
注意std::string::length()
是一个函数,而不是一个变量。
我更喜欢.size()
,因为它与所有其他容器一致。其他容器没有.length()
成员函数;只有std::string
具有此功能,以及返回相同值的.size()
。
因此,如果std::string
有.size()
,那么为什么会例外并使用.length()
?为什么不一直使用.size()
?我想你建议使用.size()
代替.length()
:
cout <<"string length is now "<< s.size() <<endl;
length
是功能,不是一个成员变量。您需要:
cout << "string length is now " << s.length() << endl;
(“拍摄的......地址”),是因为s.length
是length
功能的s
类型的地址,而要通话说功能和使用错误返回值。
哦...我只是错过了错误。谢谢。 – Vijay
“为什么不一直使用.size()”因为std :: string实际上不是一个容器。这是一个只有正面特征(但它是重要的)的大杂烩类,它是标准的。干杯, –
@ AlfP.Steinbach:是什么使它成为一个非容器?容器的*定义是什么? – Nawaz