使用C ++中的istream_iterator将csv文件读入向量

时间:2018-02-01 03:31:25

标签: c++ vector fstream istream-iterator

我正在尝试编写一个读取csv的简单函数,并将每一行存储到一个向量中。代码如下:

   vector<string> readCSVfile( string path )
   {    
      ifstream ohlcStream( path );      

      istream_iterator<string> start(ohlcStream), end;
      vector<string> ohlcData(start, end);  
      ohlcStream.close();
      return ohlcData;
   }

但是由于某种原因,文件的行似乎由空格和换行符分隔。例如,原始数据文件的第一行如下所示:

  Date,Open,High,Low,Close,Adj Close,Volume,factor,date_downloaded

但在main中调用函数后:

    vector<string> mydata = readcsv( path );

并输出向量的元素mydata,我得到:

    element 0: Date,Open,High,Low,Close,Adj 
    element 1: Close,Volume,factor,date_downloaded

即使我在期待:

     Date,Open,High,Low,Close,Adj Close,Volume,factor,date_downloaded

我尝试过使用

    ohlcStream >> noskipws;
    istream_iterator<string> start(ohlcStream), end;

但那没用。结果是什么结果是空的。

我知道我可以使用getline和循环,但我想了解为什么我当前的代码无效。

任何帮助将不胜感激。感谢

0 个答案:

没有答案