Правильно считать и использовать информацию из текста Qt
Есть текстовый файл, право хода, цвет фигур и пары координат, такого формата:
Первая строка, право хода, строки "BLACK FIGURES" и "WHITE FIGURES" определяют в какой из векторов будут записываться пары координат.
Из кода написал:
QString fileName = QFileDialog::getOpenFileName(this,
QString::fromUtf8("Открыть файл"),
QDir::currentPath(),
"Images (*.png *.xpm *.jpg);;All files (*.*)");
QTextStream out(stdout);
// Создаем объект
QFile file(fileName);
// С помощью метода open() открываем файл в режиме чтения
if (!file.open(QIODevice::ReadOnly)) {
qWarning("Cannot open file for reading"); // если файл не найден, то выводим предупреждение и завершаем выполнение программы
}
QTextStream in(&file);
// Считываем файл строка за строкой
while (!in.atEnd()) { // метод atEnd() возвращает true, если в потоке больше нет данных для чтения
QString line = in.readLine(); // метод readLine() считывает одну строку из потока
out << line << Qt::endl;
}
То есть почти ничего. Я не понимаю как мне достать сначала право хода, а потом доставать координаты, учитывая то что есть еще и строки с цветом фигур на этих координатах
Ответы (1 шт):
Автор решения: Дон Влад
→ Ссылка
В общем, решил так, при сохранении записываю цвет после каждой координаты, сохранение:
void MainWindow::saveGame() {
QString fileName = QFileDialog::getSaveFileName(this,
QString::fromUtf8("Сохранить файл"),
QDir::currentPath(),
"Images (*.png *.xpm *.jpg);;All files (*.*)");
QFile file(fileName);
QTextStream out(&file);
if (file.open(QIODevice::WriteOnly)) {
out << view->getTurn() << Qt::endl;
for (int i = 0; i < view->black.length(); i++) {
out << view->black[i]->getOldX() << " " << view->black[i]->getOldY() << " " << "BLACK" << Qt::endl;
}
for (int i = 0; i < view->white.length(); i++) {
out << view->white[i]->getOldX() << " " << view->white[i]->getOldY() << " " << "WHITE" << Qt::endl;
}
} else {
qWarning("Could not open file");
}
}
Загрузка:
void MainWindow::loadGame() {
view->clearDesk();
QString fileName = QFileDialog::getOpenFileName(this,
QString::fromUtf8("Открыть файл"),
QDir::currentPath(),
"Images (*.png *.xpm *.jpg);;All files (*.*)");
QTextStream out(stdout);
// Создаем объект
QFile file(fileName);
// С помощью метода open() открываем файл в режиме чтения
if (!file.open(QIODevice::ReadOnly)) {
qWarning("Cannot open file for reading"); // если файл не найден, то выводим предупреждение и завершаем выполнение программы
}
QTextStream in(&file);
// Считываем файл строка за строкой
int count = 0;
while (!in.atEnd()) { // метод atEnd() возвращает true, если в потоке больше нет данных для чтения
QString line = in.readLine(); // метод readLine() считывает одну строку из потока
if(count == 0) {
view->setTurn(line);
} else {
QStringList coords = line.split(" ");
view->addFigure(coords[0].toInt(), coords[1].toInt(), coords[2]);
}
out << line << Qt::endl;
count++;
}
}
