我正在尝试将这些数据从文本文件读入我的2d数组。还有更多列,但下面的数据只是一小部分。我能够读到第一个数字" 5.1"但是大部分正在打印的内容都是垃圾后面的0。我的代码出了什么问题?
文本文件数据的一部分:
5.1,3.5,1.4,0.2
4.7,3.2,1.3,0.2
4.6,3.1,1.5,0.2
5.0,3.6,1.4,0.2
5.4,3.9,1.7,0.4
if (!fin)
{
cout << "File not found! " << endl;
}
const int SIZE = 147;
string data[SIZE];
double data_set[SIZE][4];
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < 4; j++)
fin >> data_set[i][j];
}
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < 4; j++)
cout << data_set[i][j] << " ";
cout << endl;
}
答案 0 :(得分:0)
您可以逐行读取数据,用空格替换逗号。使用std::stringstream
将行转换为流,并读取双值。
流>>
运算符在到达流末尾时将失败。你必须在那时打破循环。
您应该使用<vector<vector<double>> data
而不是固定大小的二维数组。
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <sstream>
...
string line;
int row = 0;
while(fin >> line)
{
for(auto &c : line) if(c == ',') c = ' ';
stringstream ss(line);
int col = 0;
while(ss >> data_set[row][col])
{
col++;
if (col == 4) break;
}
row++;
if (row == SIZE) break;//or use std::vector
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < 4; j++)
cout << data_set[i][j] << " ";
cout << endl;
}