【问题标题】:c++ print/read to/from text file - hex value and 4 integers and read them and separate data accordinglyc ++打印/读取文本文件-十六进制值和4个整数并读取它们并相应地分离数据
【发布时间】:2020-07-27 08:48:17
【问题描述】:

嗨,我有一个迷宫解决机器人,当它使用所述钥匙打开门时,它使用十六进制键(例如 0xFA25)打开门,如果钥匙有效并且门打开,我希望它打印房间名称,然后是方向门在里面,然后是钥匙本身,所以我可以对其进行硬编码。

例如,写入文件的格式如下:2Y35 2 0x200F

我存储房间的名称/位置没有问题,因为我可以写 3 个整数,与方向相同,我遇到的问题是如何打印十六进制值,例如我尝试打印之前的值和它们像 195151 一样出来(不确定这是否是存储的所述十六进制值的结果数),但由于我还需要将十六进制值读回系统,我需要将其格式化为 4 位十六进制值(例如 0xFA25)。

另一个问题是我如何让机器人读取该行:2Y35 2 0x200F(例如) 并将线排序为Level = 2,(忽略Y),North/south = 3,east/west = 5 direction = 2 key = 200F

我可以在这里发布的任何代码都不会使其更清晰

【问题讨论】:

    标签: c++ string io getline


    【解决方案1】:

    有趣的是我解决了它,显然我没有很好地浏览我的旧问题,使用 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]);
            }
    

    bot 运行良好,仅在尚未从文件中读取密钥时才将密钥保存到文件中,希望这对正在寻找与我相同的字符串拆分的人有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 2015-12-24
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多