一、c++读写xml文件
1、定义了两个类,
将需要的数据,按字符串写进指针buf,然后保存xml文件,再读出来,写进别的类任务,将字符串转换为数字,进行计算
#define CONFIG_FILE_CALIB "/root/config/config.xml"
using namespace cv;
using namespace std;
double fishcorrect_value[14]={
0,};
class Top//定义了一个大类
{
public:
explicit Top();
~Top();
static Top *getInstance();
CThread *config; //其中一个类
CThread *rectify; //其中一个类
static class Top *instance;
};
class CRectify:public //定义了一个类
{
public:
CRectify(void *is, SX_S8 *name, SX_S32 id);
~CRectify();
virtual SX_S32 open(void *arg);
private:
Top *is;
};
class Top;
class CConfig:public //定义了一个类
{
public:
explicit CConfig(void *is, SX_S8 *name, SX_S32 id);
~CConfig();
virtual SX_S32 open(void *arg);
char light_centrerow1[100];
char light_centrecol1[100];
char light_K4[100];
char light_K3[100];
char light_K2[100];
char light_K1[100];
char light_K0[100];
private:
Top *is; SX_S32 saveFile(SX_S8 *data, SX_S32 len, SX_S8 *filename);
SX_S32 readFile( SX_S8 *filename, SX_S8 *buf, SX_S32 buflen);
};
SX_S32 CConfig::saveFile( SX_S8 *data, SX_S32 len, SX_S8 *filename)
{
if( data == NULL || filename == NULL)
{
TRACE(DL_ERROR, "DL_ERROR\n");
return -1;
}
if( (len < 0) || (len > (MAX_CONFIG_FILE_LEN) ))
{
TRACE(DL_ERROR, "DL_ERROR\n");
return -1;
}
/* //TODO
data check, CRC check
*/
FILE *fd = fopen( filename, "wb" );
if( !fd )
{
TRACE(DL_ERROR, "DL_ERROR\n");
return -1;
}
if ( fwrite( data, 1, len, fd ) != len )
{
TRACE(DL_ERROR, "DL_ERROR\n");
fclose(fd);
return -1;
}
fclose( fd );
return len;
}
SX_S32 CConfig::readFile( SX_S8 *filename, SX_S8 *buf, SX_S32 buflen)
{
SX_S32 s32Ret = 0;
SX_S32 s32ReadLen = 0;
if( buf == NULL || filename == NULL)
{
TRACE(DL_ERROR, "DL_ERROR\n");
return -1;
}
memset( buf, 0, buflen );
FILE *fd = fopen( filename, "rb" );
if( !fd )
{
TRACE(DL_ERROR, "DL_ERROR\n");
return -1;
}
fseek(fd, 0, SEEK_END);
s32Ret