wfstream f(data_file, wfstream::in);
while( !f.eof() && f.good() )
{
TCHAR sz[1024 * 128 ] = {0};
f.getline(sz, (sizeof(sz) / sizeof(wchar_t)) - 1);
}
两个说明,一是fstream.getline的第二个参数需要传入字符数,而非字节数,文档中没有明确说明,俺在这里栽过。二是,如果单行超过了缓冲,则循环会结束,因为f.good()返回false。
总结:用getline的时候,一定要保证缓冲区够大,能够容纳各种可能的数据行。切记传入字符数。