C++ 读取 CSV 文件

C++实现读取CSV格式数据。

#include <iostream>
#include <vector>
#include <ifstream>
using namespace std;

vector< vector<float> > LoadData( const char* strFilePath )
{
    //Read CSV Data
    vector< vector<float> > vecData;
    ifstream inFile( strFilePath );
    string strLine;
    int nRowCount = 0;
    getline( inFile, strLine ); //skip first row data
    while( 1 )
    {
        getline( inFile, strLine );
        int nPos = strLine.find( "," );
        if( nPos < 0 )
           break;

        nRowCount++;
        vector<float> vecTmp;
        while( nPos > 0 )
        {
            string strTmp = strLine.substr( 0, nPos );
            float fTmp = atof( strTmp.c_str() );
            vecTmp.push_back( fTmp );

            strLine.erase( 0, nPos+1 );
            nPos = strLine.find( "," );
        }
        float fTmp = atof( strLine.c_str() );
        vecTmp.push_back( fTmp );
        vecData.push_back( vecTmp );
    }
    int nColCount = 0;
    if( nRowCount > 0 )
        nColCount =  vecData[0].size();

    float fData[ nRowCount ][ nColCount ];
    for( int nRow = 0; nRow < nRowCount; nRow++ )
    {
        vector<float> vecTmp = vecData[ nRow ];
        vecTmp.resize( nColCount, 0 );
        for( int nCol = 0; nCol < nColCount; nCol++ )
        {
            fData[ nRow ][ nCol ] = vecTmp[ nCol ];
        }
        if( nRow < 5 )
            cout << fData[nRow][0] << endl;
    }
    cout << "Data Row Count: " << nRowCount << " Column Count: " << nColCount;
    return vecData;
}

猜你喜欢

转载自blog.51cto.com/weiyuqingcheng/2518671