C++ std::ifstream::read忽略新行字节
我试图将整个文件读入缓冲区,但由于某些原因,新行字节('\n')被忽略。你知道为什么吗C++ std::ifstream::read忽略新行字节,c++,C++,我试图将整个文件读入缓冲区,但由于某些原因,新行字节('\n')被忽略。你知道为什么吗 std::ifstream fin( p_FilePath.c_str( ), std::ifstream::binary ); if( !fin.is_open( ) ) { return false; } fin.seekg( 0, std::ios::end ); int FileSize = fin.tellg( ); fin.seekg( 0, std::ios::beg ); cha
std::ifstream fin( p_FilePath.c_str( ), std::ifstream::binary );
if( !fin.is_open( ) )
{
return false;
}
fin.seekg( 0, std::ios::end );
int FileSize = fin.tellg( );
fin.seekg( 0, std::ios::beg );
char * pData = new char[ FileSize ];
fin.read( pData, FileSize );
默认情况下,新行字符
\n
是流插入的分隔符。您如何知道它们被忽略?我正在调试数组,可以清楚地看到在没有新行字节的情况下,下一行是如何在最后一行之后立即开始的。您使用的是Mac吗?Mac上文本的行分隔符是'\r'
,如果您不使用std::ifstream::binary
,则标准库会将其转换为'\n'
。不,windows。正在检查\r\n已修复它。VisualStudio的调试器似乎忽略了新行字节