csvパーサなんて、この程度がブログに載っててコピペで使う、くらいで丁度いい。
241 のはメインメモリに全部読まないからメモリにやさしいかもしれないが、メモリ消費量を気にするくらい大きな csv を扱うのは疑問だ。
それにカラムに改行が入ってはならないという制限を付けるだけで、簡単に行単位で扱えるようになり、メモリ消費量が最大の一行分になる。

// " を含んだままカラムと扱う。
// 閉じてない " は最後まで 1 カラム。
const char * endOfCsvColumn( const char * p, const char * end ) {
const char delimiter[] = ",\r\n";
if ( *p != '"' )
return std::find_first_of( p, end, delimiter, delimiter+sizeof(delimiter) );
while ( p != end ) {
p = std::find( ++p, end, '"' );
if ( p != end && (++p == end || *p != '"') )
break; // quatation closed.
}
return p;
}