我在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];
}
唯一正在运作的是type
和name
。其余的看起来像892486210这样的随机值
错误是你试图将char*
值重新解释为数字。使用sscanf
与SCNu16
和SCNu32
,如下所示:
sscanf(argv[1], "%" SCNu16, &row->user);
sscanf(argv[2], "%" SCNu32, &row-> ipAddress);