将char *转换为uint16和uint32

问题描述 投票:1回答:1

我在C ++中使用sqlite3。我在将char数组中的SQL结果导入到我的结构中时遇到了一些麻烦。

class Row {
    public:
        uint8_t type;
        uint16_t user;
        uint32_t ipAddress;
        std::string name;
};

void SqlToRow(char **argv, Row *row){
    row->type = *(argv[0]);
    row->user = *(uint16_t*)argv[1];
    row->ipAddress = *(uint32_t*)argv[2];
    row->name = argv[3];
}

唯一正在运作的是typename。其余的看起来像892486210这样的随机值

c++ sqlite
1个回答
1
投票

错误是你试图将char*值重新解释为数字。使用sscanfSCNu16SCNu32,如下所示:

sscanf(argv[1], "%" SCNu16, &row->user);
sscanf(argv[2], "%" SCNu32, &row-> ipAddress);
© www.soinside.com 2019 - 2024. All rights reserved.