Работа с возвратом каретки и переводом строки в файлах Linux - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть скрипт c++98 на linux, в котором я читаю файл от пользователя по определенному пути. Если файл записан в операционной системе Linux, конец каждой строки будет LF перевода строки. Принимая во внимание, что если файл написан на Windows, он будет заканчиваться CR LF. (Возврат каретки и перевод строки)

Моя проблема заключается в том, что файл записывается в Windows и редактируется в Linux, иногда, если курсор находится в начале строки и вводится пробел, это приведет только кCR, который не будет распознан как новая строка при чтении файла. Я использую ifstream для чтения строки файла с помощью лжи

Файл, написанный на Linux

File Written on Linux

Файл, написанный на Windows

File Written on Windows

Конфликт файлов при переносе из windows в linux

File conflict

bool ConfigParser::loadFile(const std::string filePath)
{
    std::ifstream fio;          // Config file descriptor

    fio.open(filePath.c_str());
    if (fio.is_open())
    {
        int lineNumber = 0;
        std::string line;
        while(std::getline(fio, line))
        {
            lineNumber++;
        }
        fio.close();
    }
}

Есть ли способ заменить все CR перед чтением файла или есть идеи, как решить такую ​​проблему?

...