[英]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.