Для моей игры я создаю tilemap, в котором есть плитки с различными числовыми идентификаторами, такими как 1, 28 и т.д. Эти данные карты сохраняются в файл.dat, который пользователь редактирует, и выглядит примерно так:
0, 83, 7, 2, 4
Теперь, чтобы игра создавала правильные плитки, она должна видеть, что данные карты явно. То, что я хочу, чтобы этот небольшой парсер выполнял, - это пропустить пробелы и запятые и получить числовые данные. Кроме того, я хочу, чтобы это было так, что я могу получить не только одиночные цифровые номера, но и 2-3 цифры (83 и т.д.).
Спасибо за любую помощь!
Это синтаксический анализ CSV, но легкий взгляд на глаза. В зависимости от того, хотите ли вы "владеть" кодом или использовать то, что сделал кто-то другой. Есть два хороших ответа на SO и две хорошие библиотеки для быстрого поиска.
Преимущество использования предварительно написанного синтаксического анализа заключается в том, что при необходимости какой-то другой функции он, вероятно, уже существует.
Звучит как работа для функции 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. Вы можете прочитать его либо сразу, либо фрагмент куском (вызов функции для каждого фрагмента).
getline
если хотите разделить запятыми.