[英]Using array from class in main function
请考虑以下代码:
#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]
,输入缓冲区为空,因此它等待您的下一个输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.