我有一个数据文件,我需要从每行读取数据并存储它。然后根据其中一个数据的值将数据存储在一个数组中,这样我就可以计算出所有这些数据的中值。
数据线是人口统计信息,具体取决于地理位置,人员地址。我需要捕捉他们的年龄,然后找到居住在特定街道上的人的中位数。
所以数据集是150,000条记录,每条记录有26个字段,其中很多字段是地址的一部分,其他字段只是数字,年龄,街道号等等。
所以我需要做的是读取该行,然后如果记录中的特定字段满足某个条件,我需要从记录中捕获一个字段并将其存储在一个数组中,以便我可以计算出的中位数例如,住在“橡树街”的人。
我有条件逻辑,可以解决这个问题,但我对C ++中的iostream对象感到不舒服,比如实例化一个ifstream对象,然后从文件本身读取。
哦,我忘了数据是逗号分隔的值文件。
答案 0 :(得分:3)
以逗号分隔的输入:
using namespace std;
ifstream file;
string line;
while(getline(file, line)) {
istringstream stream(line);
string data[3];
for(int ii = 0; ii < sizeof data / sizeof data[0]; ++ii)
if(!getline(stream, data[ii], ','))
throw std::runtime_error("invalid data");
// process data here
}
对于以空格分隔的输入(原始答案):
using namespace std;
ifstream file;
string line;
while(getline(file, line)) {
int datum1;
string datum2;
double datum3;
istringstream stream(line);
if(!(line >> datum1 >> datum2 >> datum3))
throw std::runtime_error("invalid data");
// process data here
}
这些方法不会赢得任何奖项,但希望它们相当可靠且易于理解。
答案 1 :(得分:1)
对于SQL轻型嵌入式数据库来说,这听起来像是一个完美的问题。然后,您可以拥有任意数量的标准SQL功能,而无需重写轮子。