Какой самый простой способ проанализировать эти данные?

0

Для моей игры я создаю tilemap, в котором есть плитки с различными числовыми идентификаторами, такими как 1, 28 и т.д. Эти данные карты сохраняются в файл.dat, который пользователь редактирует, и выглядит примерно так:

0, 83, 7, 2, 4

Теперь, чтобы игра создавала правильные плитки, она должна видеть, что данные карты явно. То, что я хочу, чтобы этот небольшой парсер выполнял, - это пропустить пробелы и запятые и получить числовые данные. Кроме того, я хочу, чтобы это было так, что я могу получить не только одиночные цифровые номера, но и 2-3 цифры (83 и т.д.).

Спасибо за любую помощь!

  • 0
    Это называется CSV (значения, разделенные запятыми) . Довольно распространенный, хотя и не стандартизированный формат файла. Поиск "разбора CSV".
  • 0
    Это стандартное упражнение для ввода в формате iostream. Вы можете использовать getline если хотите разделить запятыми.
Показать ещё 1 комментарий
Теги:
string
fstream
stl
stringstream

2 ответа

0

Это синтаксический анализ CSV, но легкий взгляд на глаза. В зависимости от того, хотите ли вы "владеть" кодом или использовать то, что сделал кто-то другой. Есть два хороших ответа на SO и две хорошие библиотеки для быстрого поиска.

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

0

Звучит как работа для функции strtok:

#include <stdlib.h>
#include <string.h>

int parseData(char* data, size_t maxAllowed, int* parsedData) {
  char * pch;
  pch = strtok (data," ,");
  int idx = 0;
  while (pch != NULL)
  {
    parsedData[idx++] = atoi(pch); //convert to integer
    if (i == maxAllowed) {
      break; //reached the maximum allowed
    }
    pch = strtok (NULL, " ,");
  }
  return i; //return the number found
}

//E.g.
char data[] ="0, 83, 7, 2, 4";
int parsedData[5];
int numFound = parseData(data,5,parsedData);

Вышеприведенный образец удалит все пробелы и запятые, возвращая целое значение для каждого найденного вместе с общим количеством найденных элементов.

Чтение файла можно легко выполнить с помощью функций C. Вы можете прочитать его либо сразу, либо фрагмент куском (вызов функции для каждого фрагмента).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню