C++实现读取CSV格式数据。
#include
#include
#include
using namespace std;
vector< vector > LoadData( const char* strFilePath )
{
//Read CSV Data
vector< vector > 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 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 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;
}