vector的一个疑问

allforly 2003-08-25 03:12:42
char name[10];
int id;
vector<char *> namelist;
vector<int> idlist;
/*检索数据库(略)*/
retcode = SQLFetch(hstmt);
while (retcode==SQL_SUCCESS||retcode==SQL_SUCCESS_WITH_INFO){
SQLGetData(hstmt, 1, SQL_C_LONG, &id, 10, &length);
SQLGetData(hstmt, 2, SQL_C_CHAR, name, 10, &length);
namelist.push_back(name);
idlist.pusu_back(id);
retcode = SQLFetch(hstmt);
}

for (int i=0;i<(int)namelist.size();i++)
cout<<namelist[i]<<"->"<<idlist[i]<<endl;
结果是,namelist里的数据都是最后一条数据,而idlist里的数据却是真实数据,这是为什么呢?难道int数据类型可以自动分配空间,而char *类型数据必须用new char?
...全文
115 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
oopig 2003-08-26
  • 打赏
  • 举报
回复
把vector<char *> namelist;改成vector<string> namelist;
zcchm 2003-08-25
  • 打赏
  • 举报
回复
vector<char *> namelist;

你定义的元素类型为char*,

namelist.push_back(name);这行代码是把name的copy放在vector里,
那么namelist里面每个元素都是name[]的首地址,当然所有的数据都一样!

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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