Как удалить символ перевода каретки (0x0D) при чтении файлов в linux на C++
Я бы, пожалуй, не парился и просто проверял наличие в конце строки \r, и, если он присутствует, то удалял бы его через .erase().

Или еще лучше просто сконвертировал бы весь файл.
Посмотрите на вот такую перегруженную версию getline:
basic_istream& getline (char_type* s, streamsize n, char_type delim);
Если в качестве параметра delim указать 0x0D, то этого символа в считываемых строках не будет.