在cout语句中连接数组大小

时间:2014-09-27 01:11:46

标签: c++ arrays

我正在尝试输出数组中元素对象的数量,但其语法与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 ++语法中不起作用,那该怎么办?

2 个答案:

答案 0 :(得分:4)

Java数组的C ++等价物是std::vectorsent.size()是获得大小的正确方法。

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

我猜你试图使用C风格的数组 - 不要这样做,C风格的数组由于历史原因而具有奇怪的语法和行为,并且实际上根本不需要使用它们在C ++中。

答案 1 :(得分: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)

C-Array不是对象。所以它没有成员或方法,你不能使用成员运算符。 sizeof运算符用于查找基本类型的大小(以字节为单位)。 sizeof返回类型为size_t的整数值。