Это задание, которое потребовало от меня использовать ifstream для потоковой передачи файла CSV .Этот CSV-файл содержит 52 названия состояний и количество различных ресурсов, используемых каждым состоянием.например:
Алабама, 410.20,715.70,169.40,18.00,44.90,309.10,11.90,417.30,64.50,167.40,23.70,0.10,0.40,0.00
затем мне нужно предложить пользователю ввести имя состояния, а вывод - это процент используемых ресурсов.
Я создал структуру, содержащую тип строки и массив для хранения значения каждого состояния, и создал массивструктуры для хранения данных нескольких состояний, но я не уверен, правильный ли мой код, и я хочу знать, как получить доступ к другим данным, таким как хранилище данных в моем двойном массиве, когда пользователь вводит имя состояния.вот мой код:
struct statData
{
string statename;
double StatDataNumber[14];
}DataStruc[51];
int main()
{
ifstream indata;
string line;
statData State;
State.statename;
statData Consumption;
Consumption.StatDataNumber;
indata.open("Data2016.csv"); //opening file
if (indata.fail()) //fail safe
{
cout << "Fail to open file";
exit(1);
}
getline(indata, line); //skipping the first line of the csv file
int i;
int N = 0;
int NLoop;
int Loop = 0;
string InvertValueBefore;
double InvertValueAfter;
char comma;
while (indata.eof()) // before file reache the end
{
for (NLoop = 0; NLoop < 51; NLoop++) // struct array loop
{
{
getline(indata, DataStruc[Loop].statename, ',');// getting statename
for (i = 0; i <= 12; i++) // each group of data, except last
{
indata >> DataStruc[Loop].StatDataNumber[N] >> comma;// storing data in struct
N++;
}
getline(indata, InvertValueBefore); // store last value as string
InvertValueAfter = stoi(InvertValueBefore); // convert it into double
InvertValueAfter = DataStruc[Loop].StatDataNumber[N]; // store it in array of struct
}
Loop++;
}
}
ReadData();
return 0;
}
void ReadData (ifstream& indata , statData DataStruc[] )
{
int i;
string input;
bool stayinloop = true;
cout << "Enter a statename or 'q' to quit\n";
getline(cin, input);
while (stayinloop == true)
{
if (input == "Alabama")
DataStruc[i].statename == "Alabama";
DataStruc[i].StatDataNumber[]
}
}
этот код не закончен.Пожалуйста, дайте мне знать, если вы обнаружите любую другую ошибку.Спасибо!