fstream.getline的坑

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的时候,一定要保证缓冲区够大,能够容纳各种可能的数据行。切记传入字符数。

posted @ 2011-01-29 21:05  小 楼 一 夜 听 春 雨  阅读(4510)  评论(0编辑  收藏  举报