1

我正在尝试将 a 推回const char*forloop 中的向量中。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*for char_temp.symbol_first,那么如何在 forloop 中用不同的地址填充这个向量?

const char* bg_cc = new char在forloop中尝试过,但bg_cc始终使用相同的地址。

提前致谢!

4

2 回答 2

4

我在 forloop 中尝试了 const char* bg_c​​c = new char ,但 bg_c​​c 保持相同的地址。

还好,有点期待。重要的是它指向不同的地址。

您需要使用char* bg_cc = new char然后strcpysym.c_str()创建副本,而不仅仅是将指针分配给sym.c_str().

于 2012-06-28T09:17:26.537 回答
1

1) sym 对象将在每次“for”迭代后被销毁。和指针bg_cc变得char_temp.symbol_first无效。您需要在每个“for”迭代中为bg_cc指针分配内存。可与new操作员一起使用。你确定你需要const char*这里吗?可能单身char就够了?

2)看起来您将相同的对象放入chars_temp容器中。char_temp您需要在每次循环迭代中为对象分配内存。

于 2012-06-28T09:32:08.693 回答