-2
我有結構分配值結構包含在數組成員
struct SerialNumberData* serialNumberArrayTest
的陣列和我的結構定義爲
struct SerialNumberData
{
const char* serialNumber;
const char* serialNumberPos;
};
什麼IM tryng做的是將值分配給成員結構,然後將結構添加到數組中。我輸入一個循環,其中值被分配給每個結構,然後傳遞給數組。
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循環之後再次登錄,則所有值都將被最後一個值覆蓋。
我已經嘗試了很多事情來說明在這一點上,甚至有一個向量,但沒有成功。任何幫助或建議將不勝感激。
您正在存儲指向結構體中的本地('token'和'readLine')的指針。這些當地人在循環後消失,並可能在循環中被覆蓋。在結構中用'std :: string'替換'const char *',並使用'std :: vector'或'std :: array'來存儲結構數組。它會爲你節省很多頭痛。 – crayzeewulf
@crayzeewulf'std :: string'很可能是更好的選擇。 –
@πάνταῥεῖ特別是因爲他使用C++,所以我想不出使用'std :: string'的好理由。 –