我的代碼有這部分被扔我一個錯誤字符串操作追加一個字符串本身
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