2014-09-27 76 views
0

我想輸出在我的數組元素的對象的數量,但因爲它是Java的語法是否不一樣的:串聯在COUT聲明數組大小

// print list of all messages to the console 
void viewSent() 
{ 
    cout << "You have " << sent.size() << " new messages.\n";//Error: left of '.size' must have class/struct,union 
    std::cout << "Index  Subject" << '\n'; 

    for (size_t i = 0; i < sent.size(); ++i) 
    { 
     std::cout << i << " : " << sent[i].getSubject() << '\n'; 
    } 
} 

如果.size在C++語法中不起作用,有什麼作用?

+4

「但它的語法與Java的語法不同。」這並不令人驚訝,因爲C++不是Java。 – 2014-09-27 02:32:48

+0

更新此代碼以顯示'sent'的定義 – 2014-09-27 03:39:55

回答

4

的C++當量Java數組的是std::vectorsent.size()是獲取大小的正確方法。

您沒有發佈您的sent的定義,但它應該是std::vector<YourObject> sent;,也許還指定了初始大小和/或值。

我猜你試過使用C風格的數組 - 不這樣做,C風格的數組由於歷史原因具有奇怪的語法和行爲,真的不需要在C++中使用它們。

+0

我知道向量更好,但現在,我需要C風格的.size()陣列版本任何人都知道? – 2014-09-27 02:54:56

+0

@SamJava_The_Hut所以它不是一個矢量?你可以發佈你的'sent'的定義嗎? – Deqing 2014-09-27 03:32:46

+0

size()不存在C風格的數組版本。 [見這裏](http://stackoverflow.com/questions/15861115/how-to-find-out-the-length-of-an-array)的一些想法。 – 2014-09-27 03:39:39

0

如果陣列是C數組,你可以通過它循環是這樣的:

for (size_t i = 0; i < (sizeof(sent)/sizeof(TYPE)); ++i) 

...其中TYPE是基礎類型的數組。

例如,如果發送被定義爲:

int sent[]; 

...然後TYPE將int,像這樣:

for (size_t i = 0; i < (sizeof(sent)/sizeof(int)); ++i) 

A C-陣列不是一個對象。所以它沒有成員或方法,你不能使用它的成員操作符。 sizeof運算符用於查找基本類型的大小(以字節爲單位)。 sizeof返回類型爲size_t的整數值。