Получения длины файла в символах


Вот моя функция для получения длины файла в символах:

unsigned int GetFileLength(std::string FileName)
{
std::ifstream InFile(FileName.c_str());
unsigned int FileLength = 0;
while (InFile.get() != EOF) FileLength++; 
InFile.close();
return FileLength;
}

Как это может быть улучшено?



22001
7
задан 23 марта 2011 в 01:03 Источник Поделиться
Комментарии
3 ответа

Просто искать в конце файла и считываем значение:

ifstream is;
is.open (FileName.c_str(), ios::binary );
is.seekg (0, ios::end);
length = is.tellg();

7
ответ дан 23 марта 2011 в 01:03 Источник Поделиться

Я не люблю ищущих, так вот мой не ищет подход.

#include <sys/stat.h>
#include <cerrno>
#include <cstring>
#include <stdexcept>
#include <string>

off_t GetFileLength(std::string const& filename)
{
struct stat st;
if (stat(filename.c_str(), &st) == -1)
throw std::runtime_error(std::strerror(errno));
return st.st_size;
}

6
ответ дан 24 марта 2011 в 02:03 Источник Поделиться

Точность важна? Я верю, что вы могли бы попытаться получить размер файла и разделить это количество байт форматирование использует. Это может дать хорошую оценку количества символов в файле.

Я говорю оценить, потому что я могла забыть о возможных заголовков И такие, хотя я считаю, что простой текстовый файл нет.

1
ответ дан 23 марта 2011 в 01:03 Источник Поделиться