为数组

时间:2015-10-13 20:23:18

标签: c++ arrays pointers structure

我有一系列结构

struct SerialNumberData* serialNumberArrayTest

我的结构定义为

struct SerialNumberData
{
  const char* serialNumber;
  const char* serialNumberPos;
};

我要做的是将值赋给结构的成员,然后将结构添加到数组中。我输入一个循环,其中值被分配给每个结构,然后传递给数组。

for(int i=0; i<numArrays;i++){  
    std::string serial = "serialNumberArray";
    oss << i;
    serial += oss.str();
    std::string readLine =  "Some value" + serial;
    size_t pos = 0;
    std::string token = "Some other value" + serial;

    serialNumberArrayTest[i].serialNumber = token.c_str();
    serialNumberArrayTest[i].serialNumberPos = readLine.c_str();
    //..Logger writes the values to an external log file
    oss.str("");
    oss.clear();
}

问题是最后一个结构的值被保存到数组中包含的所有结构的值。记录器在日志文件中写入正确的值,但如果我也在for循环后再次记录,则所有值都将被最后一个值覆盖。

在这一点上,我已经尝试了许多太多的东西来重述,即使是在向量但是没有成功。任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

serialNumberArrayTest[i].serialNumber = token.c_str();
serialNumberArrayTest[i].serialNumberPos = readLine.c_str();

你在这里存储指向temporaries的指针。不要那样做。决定谁管理内存的生命周期并明智地实现。如果struct管理自己数据的生命周期,请使用:

serialNumberArrayTest[i].serialNumber = strdup (token.c_str());
serialNumberArrayTest[i].serialNumberPos = strdup (readLine.c_str());