我正在通过一个程序,我有一个包含州名的输入文件,每个州有三个单独的税:销售税,财产税和所得税。我试图将税值(读作双变量)读入double类型的数组中。这是我的代码:
function toRx ( eventEmitter ) {
return Rx.Observable.create(function ( observer ) {
eventEmitter.subscribe(function listener ( value ) {observer.onNext(value)});
// Ideally you also manage error and completion, if that makes sense with Angular2
return function () {
/* manage end of subscription here */
};
};
)
}
这是数据文件:
{{1}}
从这里,程序输出数组,除了每个位置读取-9.25596e + 061。我想知道这是否是因为该程序试图将字符串读入数组。我还想知道是否有办法逐行忽略文件中的字符串,以便只将双值读入数组。
答案 0 :(得分:0)
您在sed -E 's/^.*([Ss][Cc][-_]?[0-9]{4}).*(\.[a-Z]{3})$/\1\2/' infile
循环中读取整行。您以后不需要for
。相反,你应该这样做:
fin >> array[i][j]
答案 1 :(得分:0)
这应该做的工作:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
double array[5][3];
string state_name;
ifstream fin;
fin.open("test.dat");
// Read the file row by row
int row =0;
while(fin >> state_name >> array[row][0] >> array[row][1] >> array[row][2]) {
++row;
}
// Print the result
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 3; j++) {
cout << array[i][j] << "\t";
}
cout << endl;
}
return 0;
}
如果你允许我进一步思考,你可能更喜欢将每一行推入向量而不是静态数组。否则,如果文件的行数超过5行,则需要重写代码。