我有以下C++代码与SQLite3一起用于测试目的.它是一个customer声明了回调函数的类.只要sqlite3_exec()从SQLite数据库返回结果(记录),就会调用此回调函数.
我不喜欢这种结构的是,处理结果的源代码位于类之外的回调函数中,而不是由sqlite3_exec()调用的类方法处理的结果.
在回调函数完成从SQL查询结果中提取值之后,我可以使用将在类方法中使用的全局变量.但是如果有多个记录并且多次调用回调函数会怎么样呢.然后我需要使用数组,除非我确保我只有单个结果.
我是否需要忘记回调函数并深入调用SQLite API?
或者我是否需要转到C++包装器,我想那里没有回调机制,结果会传递回类方法本身?
// customer
#include "Customer\customer.h"
//## begin module%50E6CCB50119.additionalDeclarations preserve=yes
static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
char* columnName;
char* columnValueString;
short int columnValueShortInt = 0;
int columnValueInt = 0;
cout << "begin of callback function\n";
for(i=0; i<argc; i++)
{
columnName = azColName[i];
if (strcmp(columnName, "FirstName")==0 || strcmp(columnName, "LastName")==0)
{
columnValueString = argv[i];
cout << "columnName = " << columnName << "; value = …Run Code Online (Sandbox Code Playgroud) 如何将浮点转换为字符串,并在浮点为圆数时添加2位小数.目前我正在使用以下内容,但对于整数,我希望添加.00.我需要为此编写自己的例程吗?
float floatingNumber = 1.00;
string string;
ostringstream stream;
stream << floatingNumber;
string += stream.str(); // result is 1 not 1.00
Run Code Online (Sandbox Code Playgroud)