std::vector出现乱码的问题

yaphare 2013-10-25 09:51:39
过程是:使用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();
}
}
...全文
695 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
爆豆 2013-10-25
  • 打赏
  • 举报
回复
tagKuCun *strTmpKuCun=new tagKuCun(); 你敢用new之后不delete,写代码忌讳这个。换成这个:tagKuCun strTmpKuCun;不是挺好吗。
ztenv 版主 2013-10-25
  • 打赏
  • 举报
回复
引用 2 楼 yaphare 的回复:
非常感谢,那要怎么改才能实现想要的功能呢? [quote=引用 1 楼 lianshaohua 的回复:] 1、先看一下LPCTSTR代表了什么 2、接着你应该应该明白了MoveNext()之后为什么第一个结构体会乱码了 可先不使用vector,你先声明两个结构体实例,按你的方法读到第二个,这时再看第一个结构体变量
[/quote] 你的结构中存储的是指针,读取的时候为指针分配内存,然后copy m_pADO->GetRecordset()->GetCollect("GoodsCode");这些字段中的数据,再试试看
kivien 2013-10-25
  • 打赏
  • 举报
回复
项目属性中的字符集问题?
yaphare 2013-10-25
  • 打赏
  • 举报
回复
非常感谢,那要怎么改才能实现想要的功能呢?
引用 1 楼 lianshaohua 的回复:
1、先看一下LPCTSTR代表了什么 2、接着你应该应该明白了MoveNext()之后为什么第一个结构体会乱码了 可先不使用vector,你先声明两个结构体实例,按你的方法读到第二个,这时再看第一个结构体变量
ztenv 版主 2013-10-25
  • 打赏
  • 举报
回复
1、先看一下LPCTSTR代表了什么 2、接着你应该应该明白了MoveNext()之后为什么第一个结构体会乱码了 可先不使用vector,你先声明两个结构体实例,按你的方法读到第二个,这时再看第一个结构体变量

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧