在cout语句中连接数组大小

Concatenating an array size in cout statement

本文关键字:数组 连接 cout 语句      更新时间:2023-10-16

我试图输出数组中元素对象的数量,但语法与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::vectorsent.size()是获取大小的正确方法。

您没有发布sent的定义,但它应该是std::vector<YourObject> sent;,可能还指定了初始大小和/或值。

我猜你尝试过使用C样式数组——不要这样做,由于历史原因,C样式数组有奇怪的语法和行为,在C++中真的没有必要使用它们。

如果你的数组是C-array,你可以这样循环:

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-Array不是对象。因此,它没有成员或方法,您不能将成员运算符与之一起使用。sizeof运算符用于查找基本类型的大小,单位为字节。sizeof返回类型为size_t的整数值。