使用C ++

时间:2018-01-27 22:34:40

标签: c++ text file-io ofstream

Fristly我试图在eclipse下使用c ++读取文本文件中特定列引用的数据,文本文件是这样的:

ProductA  ProductB  ProductC
23.3      39        45.2
33        32        ....
10.3      12.3      ....
....      ....      ....

按照教程我写了一个小程序:

#include <iomanip>
#include <array>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <stdio.h>

int rowA = 0;
int colA = 0;

using namespace std;

int main() {

    string LineA;
    int x;
    int arrayA[10][10] = {{0}};
    string filename;
    ifstream fileIN;

    fileIN.open("input.txt");

    if (fileIN.fail()) {
        cerr << "These File Can't Be Opened" << endl;
        exit(1);
    }

    cout << "\n" << endl;

    while (fileIN.good()) {
        while (getline(fileIN, LineA)) {
            istringstream streamA(LineA);
            colA = 0;

            while (streamA >> x) {
                arrayA[rowA][colA] = x;
                colA++;
            }

            rowA++;
        }
    }

    cout << "Rows :" << rowA << endl;
    cout << "Columns :" << colA << endl;
    cout << " " << endl;

    for (int i = 0; i < rowA; i++) {
        for (int j = 0; j < colA; j++) {
            cout << left << setw(6) << arrayA[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

我希望开发代码来读取name引用的特定列的数据,然后在setter方法而不是数组中存储clumn的值,如下所示:

 if(Name="ProductA") {
   // get values of this column and set it in a setter mothod                    
   //SetProductA(values here...!)
   // So I can set values of every column in her setter method of product
  }

任何想法?

1 个答案:

答案 0 :(得分:0)

首先,在您的示例文件中,您为产品列出了一些浮点值,因此$variable = [ ..... ] 的数组您想要使用的内容!  相反,我建议您为数据文件的每一列使用int vector。这有两个好处。

  1. 它可以将您从文件中读取的正确值存储为float
  2. 您不必担心吹过10x10固定阵列
  3. 如果列比行更重要(您希望将同一列中的所有产品值存储在同一容器中),那么您可以执行类似的操作。

    float