在主要功能中使用来自类的数组

Using array from class in main function

本文关键字:数组 功能      更新时间:2023-10-16

考虑以下代码:

#include <iostream>
#include <string>
#include <algorithm>
int main()
{
    class treasure
    {
    public:
        char name[100];
        double value[100];
        double weight[100];
    };
    int itemNumber, totalWeight, i;
    treasure item;
    std::cout << "Enter total item weight: " << std::endl;
    std::cin >> totalWeight;
    std::cout << "Enter total item number: " << std::endl;
    std::cin >> itemNumber;
    for( i = 0; i < itemNumber; i++)
    {
        std::cout << "Enter item name: " << std::endl;
        std::cin >> item.name[i];
    }
    return 0;
}

我想在数组中输入5个项目,但它只是要求两个项目。首先需要一个项目,然后再打印三行后,采用另一个输入。似乎是问题所在。出了什么问题?

char name[100];表示您可以节省多达100件类型的char,而不是100个字符串。

这里的重要效果是您的输入被缓冲。std::cin >> item.name[i];从输入缓冲区中取一个char,并将其写入name[i]。您的其余输入保留在缓冲区中,将用于下一个cin的执行,即下一个执行同一代码行。

因此,如果您输入,例如'abc'它将'a"保存到 item.name[0],'b'至 item.name[1]和'c'至 item.name[2]。对于item.name[3],输入缓冲区为空,因此等待您的下一个输入。