我的代码有这部分给我一个错误
for(int i=0;i<100;i++)
{
s=s+",";
cout <<"string length is now "<<s.length<<endl;
}
我只是一次又一次地将相同的字符串附加到自身100次。 错误是:
第23行:错误:获取绑定函数的地址std :: basic_string,std :: allocator&gt; :: length()const。
任何人都可以告诉我,我在这里做错了什么?
答案 0 :(得分:2)
应该是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;
答案 1 :(得分:1)
length
是函数,不是成员变量。你需要:
cout << "string length is now " << s.length() << endl;
错误(“考虑......的地址”)是因为s.length
是length
类型的s
函数的地址,而您想要调用表示函数并使用返回值。
答案 2 :(得分:-1)
没有string::length
公开可以调用的东西。试试这个:
s.size()
OR
s.length()