[英]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.