不是有意想把标题取这么怪...
大概情况是这样的
我有一个struct,里面包含一个cstring的成员,每次在struct赋值完毕后,将其push_back进vector里但当我用vector[i]的方法调struct的时候,发现其cstring的值不对,请教是为何程序差不多是这样
struct st
{
int n;
CString strC
};st st1;vector<st> vt1;
赋值时
for(i=0;i<N;i++)
{
st1.n = 某int变量
st1.strC = 某CString变量
vt1.push_back(st1);
}使用时
for(j=0;j<N;j++)
{
st st1 = vt[j];
int a = st1.strC.n;
CString b = st1.strC;
}
这里时候,b的值就有问题了,不过int的值却是正确的

解决方案 »

  1.   

    直接用  std::string  应该没问题吧.
      

  2.   

    vector<st> vt1;
    赋值时
    for(i=0;i<N;i++)
    {
    st st1;
    st1.n = 某int变量
    st1.strC = 某CString变量
    vt1.push_back(st1);
    }这样
      

  3.   

    在使用时
    for(j=0;j<N;j++)
    {
    st st1 = vt[j];//st这个赋值只是一个浅拷贝,所以st1.strC可能会没有值了
    int a = st1.strC.n;
    CString b = st1.strC;
    }//建议改为如下vector<st>::iterator itr;
    for (itr= vt.begin(); itr!= vt.end(); itr++)
    {
         int a = (*itr).n;
         CString b = (*itr).strC;
    }