字符串操作 - 将字符串附加到自身

时间:2011-12-09 06:09:32

标签: c++ string stl

我的代码有这部分给我一个错误

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。

任何人都可以告诉我,我在这里做错了什么?

3 个答案:

答案 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.lengthlength类型的s函数的地址,而您想要调用表示函数并使用返回值。

答案 2 :(得分:-1)

没有string::length公开可以调用的东西。试试这个:

s.size()

OR

s.length()