请考虑以下代码:
#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个项目,但它只是要求两个项目。它首先需要一个项目,然后在打印三行后再次输入另一个项目。似乎是什么问题。出了什么问题?
答案 0 :(得分:3)
char name[100];
表示您最多可以保存100个char
类型的项目,而不是100个字符串。
这里的一个重要影响是你的输入是缓冲的。 std::cin >> item.name[i];
从输入缓冲区中获取一个char
并将其写入name[i]
。其余输入保留在缓冲区中,将用于下一次执行cin
,即下一次执行相同的代码行。
所以如果你输入例如&#39; ABC&#39;它可以节省一个&#39;到item.name[0]
,&#39; b&#39;到item.name[1]
和&#39; c&#39;到item.name[2]
。对于item.name[3]
,输入缓冲区为空,因此等待下一次输入。