Ваша проблема здесь:
num <= fileLength
Это должно быть:
num < fileLength
Например.Если длина равна 1. Тогда единственным допустимым символом является charArray[0]
Также обратите внимание.Делать это:
inputFile.read(charArray, fileLength);
опасно, поскольку fileLength
может быть больше, чем размер массива.
Лучшим решением было бы использование вектора (так как он динамически изменяет размеры)
std::vector<char> charArray(fileLength);
inputFile.read(&charArray[0], fileLength);
Но вам действительно нужно копировать данные в массив?Почему бы просто не сделать сумму на лету.
size_t checkSumValue = std::accumulate(std::istreambuf_iterator<char>(fileLength),
std::istreambuf_iterator<char>(),
size_t(0)
);