考虑以下代码:
#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。名称[2]
。对于 item.name[3]
,输入缓冲区为空,因此它等待您的下一个输入。
关于c++ - 在主函数中使用类中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271168/