读书人

std:vector出现乱码的有关问题

发布时间: 2013-11-04 16:56:03 作者: rapoo

std::vector出现乱码的问题
过程是:使用ADO从数据库中读取数据,然后保存到结构中,再把结构保存到std::vector中,问题是:当保存第二行数据的时候,第一行的数据就变成乱码了。请大侠给与指教。代码如下:
std::vector<tagKuCun> vecKuCun;

typedef struct _tagKuCun
{
LPCTSTR szGoodsCode;
LPCTSTR szGoodsName;
LPCTSTR szGoodsType;
LPCTSTR szGoodsUnit;
int nGoodsNumber;

}tagKuCun;

...
if(m_pADO->Execute(sqlSelectTable))
{
tagKuCun *strTmpKuCun=new tagKuCun();
while(0== m_pADO->GetRecordset()->adoEOF)
{

CString csTmpGC=(LPCTSTR)(_bstr_t)m_pADO->GetRecordset()->GetCollect("GoodsCode");
CString csTmpGN = (LPCTSTR)(_bstr_t)m_pADO->GetRecordset()->GetCollect("GoodsName");
CString csTmpGU = (LPCTSTR)(_bstr_t)m_pADO->GetRecordset()->GetCollect("GoodsUnit");
CString csTmpUnits = (LPCTSTR)(_bstr_t)m_pADO->GetRecordset()->GetCollect("Units");
int nTmpNumber=m_pADO->GetRecordset()->GetCollect("Number");

strTmpKuCun->szGoodsCode =csTmpGC;
strTmpKuCun->szGoodsName=csTmpGN;
strTmpKuCun->szGoodsType =csTmpGU;
strTmpKuCun->szGoodsUnit=csTmpUnits;
strTmpKuCun->nGoodsNumber=nTmpNumber;

vecKuCun.push_back(*strTmpKuCun); //这里循环第二次的时候,上次保存的数据就变成乱码了??(貌似是指针初始化了)
m_pADO->GetRecordset()->MoveNext();
}
} std::vector??ADO? std::vector ADO
[解决办法]
1、先看一下LPCTSTR代表了什么
2、接着你应该应该明白了MoveNext()之后为什么第一个结构体会乱码了

可先不使用vector,你先声明两个结构体实例,按你的方法读到第二个,这时再看第一个结构体变量

读书人网 >C++

热点推荐