2011-12-09 41 views
0

我的代碼有這部分被扔我一個錯誤字符串操作追加一個字符串本身

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。

有人可以告訴我我在做什麼錯嗎?

回答

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; 
+0

哦...我只是錯過了錯誤。謝謝。 – Vijay

+0

「爲什麼不一直使用.size()」因爲std :: string實際上不是一個容器。這是一個只有正面特徵(但它是重要的)的大雜燴類,它是標準的。乾杯, –

+0

@ AlfP.Steinbach:是什麼使它成爲一個非容器?容器的*定義是什麼? – Nawaz

-1

有沒有這樣的事情公開可以打電話給string::length。試試這個:

s.size() 

OR

s.length() 
+0

有'std :: length()'。 – Nawaz

+0

和'std :: string :: length()',它是'std :: string :: size()'的別名。請參閱http://www.cplusplus.com/reference/string/string/length/。 – DRH

+0

好吧,我猜測OP正在嘗試C#樣式屬性'length',這在C++中是不可用的。但'length()'當然可用。 – Donotalo

1

length功能,不是一個成員變量。您需要:

cout << "string length is now " << s.length() << endl; 

(「拍攝的......地址」),是因爲s.lengthlength功能的s類型的地址,而要通話說功能和使用錯誤返回值。