Я работаю над программой, в которой у меня есть входной файл, содержащий имена состояний, и три отдельных налога для каждого штата: налог с продаж, налог на имущество, и подоходный налог. Я пытаюсь читать налоговые значения (считанные как двойные переменные) в массив типа double. Вот мой код:C++ Чтение двойных значений в 2D-массив из файла, содержащего как строки, так и удвоенные
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
double a = 0,
b = 0,
c = 0;
double array[5][3];
string state_name;
ifstream fin;
fin.open("test.dat");
for (; fin >> state_name >> a >> b >> c;)
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
fin >> array[i][j];
cout << array[i][j] << "\t";
}
cout << endl;
}
}
return 0;
}
Вот файл данных:
TEXAS .0825 .02 -.03
CALIFORNIA .065 .04 .05
MARYLAND .03 .025 .03
MAINE .095 .055 .045
OHIO .02 .015 .02
И от этого, программа выводит массив, за исключением того, что каждая позиция читает -9.25596e + 061. Мне было интересно, было ли это потому, что программа пыталась прочитать строку в массиве. Мне также было интересно, есть ли способ игнорировать строку в строке строки за строкой, так что в массив считываются только двойные значения.
Вы должны использовать 'while (fin >> state_name >> a >> b >> c)' вместо цикла for. Ваш смысл яснее. –