Попробуйте это.
public static IEnumerable<Person> SmartCombine(IEnumerable<Person> fallback, IEnumerable<Person> translated) {
return translated.Concat(fallback.Where(p => !translated.Any(x => x.id.equals(p.id)));
}
Установите двоичный режим при открытии файла:
http://www.cplusplus.com/reference/iostream/ofstream/ofstream/
Поскольку вы не открываете файл в двоичном режиме, по умолчанию он настроен на форматированный вывод. При форматированном выводе ваша реализация выполняет преобразование символов конца строки, как вы описали.
Вы должны установить режим файла на двоичный
, когда вы открываете it:
std::ofstream file;
file.open("filename.jpg", std::ios_base::out | std::ios_base::binary);
Таким образом, поток не пытается подстроить символы новой строки под ваш собственный текст формат.
Попробуйте открыть входящий поток как двоичный. Что-то вроде этого должно работать:
ofstream ofs;
ofs.open(filename, ios::out | ios::binary);
ofs.write(buffer, bufferLen);
ofs.close();