我正试图在forloop中的向量中推回const char*
。 char_temp
是一个名为segment
的结构,chars_temp
是结构的向量。请参阅下面的代码:
for (int bg = 0; bg < str.size(); bg++) {
string sym(1, str[bg]);
const char* bg_cc;
bg_cc = sym.c_str();
char_temp.symbol_first = bg_cc;
char_temp.symbol_second = "*";
chars_temp.push_back(char_temp);
}
问题是push backed char是一个指针,因此char_temp.symbol_first
包含相同的地址。结构需要const char*
char_temp.symbol_first
,那么如何在forloop中使用不同的地址填充此向量?
我在forloop中尝试const char* bg_cc = new char
,但bg_cc
保持相同的地址。
提前致谢!
答案 0 :(得分:4)
我在forloop中尝试了const char * bg_cc = new char,但是bg_cc保持了相同的地址。
没关系,有点期待。重要的是它指向到不同的地址。
您需要使用char* bg_cc = new char
然后strcpy
sym.c_str()
来创建副本,而不只是将指针指向sym.c_str()
。
答案 1 :(得分:1)
1)每次“for”迭代后sym对象都会被销毁。 bg_cc
和char_temp.symbol_first
指针无效。您需要在bg_cc
指针的每个“for”迭代中分配内存。 new
运算符可能。你确定在这里需要const char*
吗?可能单char
就足够了吗?
2)看起来你把同一个对象放在chars_temp
容器中。您需要在每个循环迭代中为char_temp
对象分配内存。