从文本文件中读取矩阵并在C ++中使用一列的数字

时间:2013-11-07 11:02:00

标签: c++

我是初学者 我正在使用CORSIKA软件。 cosika的输出是8或7列和超过2000行的文本文件(如矩阵)。 该矩阵的数组是科学记数法中的数字,如fallowing image

2.11285E+05  2.00000E+01  1.30714E+05  7.35000E+00  1.00000E+00  1.10000E+04  0.00000E+00
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
0.00000E+00 -2.70000E+00  1.00000E+03  1.00000E+03  1.00000E+00  1.00000E+00  3.00000E-01
3.00000E-01  3.00000E-03  3.00000E-03  6.37132E+08  6.00000E+05  2.00000E+06  0.00000E+00
0.00000E+00  4.58060E-02  5.73090E-01  5.28304E-02  2.50000E+00  2.07000E+00  8.20000E+00
1.00000E-01  0.00000E+00  0.00000E+00  1.00002E+00  9.67266E-03  1.00000E+00  5.75129E-04
0.00000E+00  0.00000E+00  3.77000E+01  1.53287E-04  9.38642E+00  2.00000E-03  2.99792E+10

我想读取第7列中的数据,并在一列中计算一些参数,如平均值,最大值,最小值。

我有这段代码来阅读和显示文本文件,但我不知道如何使用数字并计算一些参数。

#include<iostream.h>        
#include<stdio.h>
#include<conio.h>

int main()
{
    FILE *k;
    char c;
    k = fopen("c:\\fff.txt", "r");
    c = getc(k);
    while(c != EOF)
    {
         cout << c;
         c = getc(k);
    }
    getch();
    fclose(k);
    return 0;
}

请帮帮我。 感谢

1 个答案:

答案 0 :(得分:0)

试试这个:

#include <iostream>
#include <string>
#include <sstream>

int main()
{
    std::string line;
    std::istringstream iss;

    while (std::getline(file >> std::ws, line))
    {
        float f;

        iss.str(line);
        while (iss >> f)
            ;

        // f is equal to the 7th row by this line
    }
}

根据您的需要,f可以是while循环范围的本地或其他。