Я пытаюсь узнать о реализации файлов, отображаемых в память, используя библиотеки повышения. Я попытался использовать много примеров кода, и даже самые простые реализации, такие как чтение файла, вызывают ошибки. Я продолжаю получать одно и то же сообщение об ошибке об исключении Microsoft C ++: boost :: wrapexcept в ячейке памяти. Кто-нибудь решил эту проблему, используя Visual Studio на Windows?
Я попытался отладить код некоторых примеров, которые я использовал, но я все еще не понимаю, как решить проблему.
#include <boost/iostreams/device/mapped_file.hpp> // for mmap
#include <algorithm> // for std::find
#include <iostream> // for std::cout
#include <cstring>
int main()
{//have use memory mapped file in read only mode and read the stduff.txt file
boost::iostreams::mapped_file mmap("stduff.txt", boost::iostreams::mapped_file::readonly);
auto f = mmap.const_data();
auto l = f + mmap.size();
uintmax_t m_numLines = 0;
//read out the data in the file and number of line
while (f && f != l)
if ((f = static_cast<const char*>(memchr(f, '\n', l - f))))
m_numLines++, f++;
std::cout << "m_numLines = " << m_numLines << "\n";
}
Я ожидаю, что кодированный будет читать m_numlines = 1, но вместо этого я получаю исключение Microsoft c ++.