簡體   English   中英

在cout語句中連接數組大小

[英]Concatenating an array size in cout statement

我正在嘗試輸出數組中元素對象的數量,但是其語法與Java的語法不同:

    // 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 ++語法中不起作用,怎么辦?

Java數組的C ++等效項是std::vector sent.size()是獲取大小的正確方法。

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

我猜想您嘗試使用C樣式數組-請勿這樣做,由於歷史原因,C樣式數組具有奇怪的語法和行為,實際上根本不需要在C ++中使用它們。

如果您的陣列是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)

C數組不是對象。 因此,它沒有成員或方法,並且您不能將member運算符與其一起使用。 sizeof運算符用於查找基本類型的大小(以字節為單位)。 sizeof返回類型為size_t的整數值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM