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

原文地址:https://www.cnblogs.com/kex1n/p/2286418.html