【发布时间】:2016-06-11 02:43:33
【问题描述】:
我正在处理一个程序,其中有一个包含州名的输入文件,以及每个州的三种单独的税:销售税、财产税和所得税。我正在尝试将税值(读取为双变量)读入双精度数组。这是我的代码:
#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
从this,程序输出数组,除了每个位置读取-9.25596e+061。我想知道这是否是因为程序试图将字符串读入数组。我还想知道是否有一种方法可以逐行忽略文件中的字符串,以便只将双精度值读入数组。
【问题讨论】:
-
您应该使用
while(fin >> state_name >> a >> b >> c)而不是 for 循环。这样你的意思就更清楚了。