c ++ печать / чтение в / из текстового файла - шестнадцатеричное значение и 4 целых числа, чтение их и разделение данных соответственно - PullRequest
0 голосов
/ 14 апреля 2020

Привет, у меня есть бот для решения лабиринта, который открывает двери с помощью шестигранных ключей (например, 0xFA25), когда он открывает дверь с помощью указанного ключа, если ключ работает и дверь открывается, я хотел бы, чтобы он напечатал название комнаты с указанием направления дверь, за которой следует сам ключ, чтобы я мог его жестко закодировать.

например, формат записи в файл будет следующим: 2Y35 2 0x200F

У меня нет проблем с сохранением имени / расположение комнаты, так как у меня есть 3 целых числа, которые я могу написать, то же самое с направлением, проблема, которую я имею, состоит в том, как я могу напечатать шестнадцатеричное значение, например, я попытался напечатать значения раньше, и они вышли как 195151 (не уверен, что это результирующее число указанного шестнадцатеричного значения сохранено), но так как мне нужно также прочитать шестнадцатеричное значение обратно в систему, мне нужно, чтобы оно было отформатировано как его 4 di git шестнадцатеричное значение (например, 0xFA25).

другая проблема как заставить бота прочитать строку: 2Y35 2 0x200F (например) и отсортировать строку по уровню = 2, (игнорировать Y), север / юг = 3, восток / запад = 5 направление = 2 ключ = 200F

без кода, который я могу опубликовать здесь, сделает его более понятным

1 Ответ

0 голосов
/ 15 апреля 2020

как ни странно, я решил это, очевидно, я не достаточно хорошо просматривал свои старые вопросы, использовал istringstream, чтобы отделить его, однако не отформатировал его, например, как 2Y03 1 FF2A, его более отформатировали как: 2 0 3 1 65322

то, как я его хранил, было

used_keys << level << ' ' << ns << " " << ew << " " << direction << " " << key << std::endl;

, и то, как я его читал,

while (getline(used_keys, line)) {
            std::istringstream iss(line);
            int level;
            int ns;
            int ew;
            int direction;
            int key;

            // this splits the string with the delimiter of whitespace

            iss >> level >> ns >> ew >> direction >> key;

            room_id[level][ns][ew].used_keys[direction] = key;
            printf("STORED KEY - %6d\n", room_id[level][ns][ew].used_keys[direction]);
        }

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

...