Откройте файловую программу с циклом while C++

Итак, вот мои инструкции по созданию цикла while для открытия файла с именем «G:/points.dat».

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

#include "Window.h"
#include "Colours.h"
#include <fstream>
#include <iomanip>
#include <string>

using namespace std;

int main(int argc, char * argv[]) {
// create a new window of size 500 x 500 pixels
// the top left corner of the window is (0,0)
    SPA::Window window(500,500,"My Test");
    ifstream myInputFile;
    string inputFileName = "G:/points,dat";

    myInputFile.open(inputFileName);

    int i = 0;
    myInputFile >> i;

    myInputFile.close();

    window.show(argc,argv);

    return Fl::run();
}
  • Откройте файл «G:/points.dat»

  • Чтение нескольких пар чисел, т. е. двух чисел в строке до конца файла.

  • Вы должны использовать цикл while и соответствующие тесты состояния файла, чтобы определить конец файла.

  • флаг eof становится истинным только после того, как вы попытаетесь прочитать хотя бы одно значение за пределами конца файла.
  • Each pair of numbers represents the x and y coordinates (x,y) of a point on a line to be drawn.
    • Inside your loop add a point to the current line for each (x,y) value you read in

person thtcurlygirl    schedule 16.02.2018    source источник
comment
Вам нужен тип, представляющий точки и набор таких точек.   -  person molbdnilo    schedule 16.02.2018
comment
Следуя рекомендации molbdnilo, прочитайте вариант 2 этого связанного ответа, чтобы узнать, как загрузить тип, содержащий точку. Также стоит рассмотреть создание >> перегрузки для этого типа, потому что он может превратить основную логику программы в тупой while цикл.   -  person user4581301    schedule 16.02.2018


Ответы (1)


Цикл достаточно легкий

while (myInputFile >> x >> y)
{
    // do something with x and y
    ...
}

Этот цикл не считывает строго два значения в строке, он просто считывает следующие два значения, независимо от того, находятся они на следующей строке или нет.

кстати у тебя опечатка в коде

string inputFileName = "G:/points,dat";

должно быть

string inputFileName = "G:/points.dat";

Когда вы открываете файл, вы должны всегда проверять, успешно ли он открыт.

person john    schedule 16.02.2018