c++ - 将 char * 转换为 uint16 和 uint32

标签 c++ sqlite

我在 C++ 中使用 sqlite3。我在将 SQL 结果从 char 数组中获取到我的结构时遇到了一些问题。

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

最佳答案

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

sscanf(argv[1], "%" SCNu16, &row->user);
sscanf(argv[2], "%" SCNu32, &row-> ipAddress);

关于c++ - 将 char * 转换为 uint16 和 uint32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49371069/

相关文章:

android - 在 Android 中使用准备好的语句进行查询?

c++ - 使用 Windows API 检测网卡和以太网设备的 IP 地址

C++如何上下捕捉鼠标滚轮?

sql - 如何将Sqlite中的日期从m/d/y转换为Y-m-d,以便可以使用strftime

javascript - 使用javascript插入带有变量的SQLite

mysql - MYSQL 和 SQLite 多用户功能有什么区别?

c++ - 如何在 Mingw Gcc 中声明和链接到 RoInitialize、RoUninitialize、RoGetActivationFactory 和 HSTRING 函数

c++ - C++中,初始化类对象数组时想通过构造函数初始化类成员怎么办?

c++ - 使用 'new'创建实例后出现堆栈溢出错误

c - SQLite 源代码中的指针边界和指针算法