В общем, было сделано следущее:
std::getline(file, line);
size_t len = line.length();
if (len && (line.c_str()[len - 1] == 0x0D) ) // linux read
line.erase(len - 1);
Такой код работает как на windows, так и на linux, при этом одинаково считываются как файлы, строки которых оканчиваются как на 0x0D 0x0A, так и на 0x0A
Всем спасибо!