读取文本文件列c ++

时间:2012-04-04 07:21:30

标签: c++ arrays

我有一个文本文件,其中数据存储为列。如何将每列提取到数组中?

  

例如:a b c d

     

10 11 12 13

 14 15 16 17

我想要四个数组,a = {10,14},b = {11,15} c = {12,16} d = {13,17}

以下是我到目前为止所做的工作,将它们添加到一个数组中:

CArray <double,double> *data = new CArray <double,double>();

CString strLine;

TRY

{ 
  CStdioFile file(m_fileName, CFile::modeRead); 

  while(file.ReadString(strLine)) {
      CArray <double,double> arrayValues;
      splitString(strLine,arrayValues);

      for (int i=0; i< arrayValues.GetSize()-1;i++){
        //  Temp_data[i] = arrayValues.ElementAt(i);
          data->Add(arrayValues.ElementAt(i));
      }
  }
} 
CATCH_ALL(e) 
{ 
  e->ReportError(); // shows what's going wrong 
} 
END_CATCH_ALL 


void splitString(CString S, CArray<double,double>& arrayValues){

CString sep = _T(" ");
int start = 0;
CString aux = S.Tokenize(sep, start);
arrayValues.Add(_tstof(aux));
while(start != -1){
      aux = S.Tokenize(sep, start);
      arrayValues.Add(_tstof(aux));

}

}

感谢。

2 个答案:

答案 0 :(得分:1)

因为你没有尝试过任何东西,直到我会给你一些建议。

首先将该行转换为string并将其拆分,然后将所有值存储在数组中。 所以最后你会得到总数的数组。

现在使用索引并根据索引将它们存储在不同的列数组中: 具有相似索引的数组中的所有元素都将存储在数组colN中。

答案 1 :(得分:0)

提示 - 希望你不介意我没有为你编写代码:)

  • 使用inputstream读取文件。
  • 通过标记输入数据来分割读取的行。
  • 使用atoi()方法将字符串转换为整数并填充数组。