Запись в бинарный файл

254
06 марта 2017, 12:38

Здравствуйте, помогите пожалуйста, решить проблему.

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

Не могу понять в чем проблема в моем методе.

Если я создаю файл 2.bin, например, но перед этим я ничего в него не записывал,то мой метод говорит, что я имею одну запись.

Код:

void City::readRecordings(char *fileName, char *num, std::vector<string> lines)
{
    string str;
    int readCount = 0;
    int n = atoi(num);
    long file_size;
    readRecord.seekg(0, std::ios::end);
    file_size = readRecord.tellg();
    if (file_size == 0){
        std::cout << "File empty" << std::endl;
    readRecord.close();
      }
    if (_access(fileName, 0) != 0) {
        std::cout << "Error" << std::endl;
    }
    else {
        readRecord.open(fileName);
        while (!readRecord.eof())
        {
            std::getline(readRecord, str);
            readCount++;
            lines.push_back(str);
        }
        if (0 == readCount)
        {
            std::cout << "ERROR: The file, which you are trying to open, is empty or it stops out" << END;
            exit(-1);
        }
        if (n > readCount)
        {
            std::cout << "!Warning!" << END;
            std::cout << "You want to read  " << n << " recordings" << " But AVAILABLE: " << readCount << " recordings" << END;
            printRecordsFromFile(readCount, lines);
        }
        else
        {
            printRecordsFromFile(n, lines);
        }
    }
}
void City::printRecordsFromFile(i num, std::vector<string> lines)
{
    for (i j = 0; j < num; j++)
        std::cout << lines[j] << std::endl;
}
Answer 1

Вот это:

readRecord.eof()

сработает только после попытки чтения, а не до. Флаг конца файла устанавливается при неудачном чтении. Так что ваша проверка до ничего не дает...

READ ALSO
Рефакторинг большой функции

Рефакторинг большой функции

Дана функция на 200 строк, обрабатывающая большое количество данных, принимающая много параметровПутём неимоверных усилий функция была порезана...

234
Найти вариант обхода графа длинной k C++

Найти вариант обхода графа длинной k C++

Есть матрица смежности a[n * m][n * m]Есть первая вершина v0 Есть число k

238
Проблема в совместном использовании curl и exe

Проблема в совместном использовании curl и exe

Я написал программу,которая работает с текстовым файлом и должна отправить его по emailДля отправки по email использовал curl

352
Реализация &ldquo;Жизни&rdquo; Конвея на JavaScript и DOM(Ошибка)

Реализация “Жизни” Конвея на JavaScript и DOM(Ошибка)

Добрый день, уважаемые господа! Написал тут реализацию "Жизни" Конвея кривую под стать своему навыку, выглядит все работающим, но на деле при...

238