//=========================================================================== bool MemoryTextFile_t::Read( char *pFileName ) { bool bStatus = false; FILE *hFile = fopen( pFileName, "rb" ); if (hFile) { fseek( hFile, 0, SEEK_END ); long nSize = ftell( hFile ); fseek( hFile, 0, SEEK_SET ); m_vBuffer.reserve( nSize + 1 ); m_vBuffer.insert( m_vBuffer.begin(), nSize+1, 0 ); // NOTE: Can NOT m_vBuffer.clear(); MUST insert() _before_ using at() char *pBuffer = & m_vBuffer.at(0); fread( (void*)pBuffer, nSize, 1, hFile ); fclose(hFile); m_bDirty = true; GetLinePointers(); bStatus = true; } return bStatus; }
//=========================================================================== bool MemoryTextFile_t::Read( char *pFileName ) { bool bStatus = false; FILE *hFile = fopen( pFileName, "rt" ); if (hFile) { fseek( hFile, 0, SEEK_END ); long nSize = ftell( hFile ); fseek( hFile, 0, SEEK_SET ); m_vBuffer.reserve( nSize + 1 ); m_vBuffer.insert( m_vBuffer.begin(), nSize+1, 0 ); char *pBuffer = & m_vBuffer.at(0); fread( (void*)pBuffer, nSize, 1, hFile ); m_vBuffer.push_back( EOL_NULL ); fclose(hFile); m_bDirty = true; GetLinePointers(); bStatus = true; } return bStatus; }
//=========================================================================== void MemoryTextFile_t::GetLine( const int iLine, char *pLine, const int nMaxLineChars ) { if (m_bDirty) { GetLinePointers(); } ZeroMemory( pLine, nMaxLineChars ); strncpy( pLine, m_vLines[ iLine ], nMaxLineChars-1 ); }