我正在尝试在一个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);
}问题是推送支持的字符是一个指针,所以char_temp.symbol_first由相同的地址组成。该结构需要一个用于char_temp.symbol_first的const char*,那么如何在forloop中用不同的地址填充这个向量呢?
我在forloop中尝试了const char* bg_cc = new char,但是bg_cc仍然有相同的地址。
提前感谢!
发布于 2012-06-28 17:17:27
我在
循环中尝试了const char* bg_cc = new char,但是bg_cc仍然有相同的地址。
这很好,这在某种程度上是意料之中的。重要的是它指向不同的地址。
您需要使用char* bg_cc = new char,然后从sym.c_str()使用strcpy来创建副本,而不仅仅是将指针分配给sym.c_str()。
发布于 2012-06-28 17:32:09
1) sym对象将在每次"for“迭代后被销毁。并且bg_cc和char_temp.symbol_first指针变得无效。您需要在每次" for“迭代中为bg_cc指针分配内存。可以与new运算符一起使用。你确定这里需要const char*吗?也许单个char就足够了?
2)看起来你把同样的对象放在了chars_temp容器中。您需要在每次循环迭代中为char_temp对象分配内存。
https://stackoverflow.com/questions/11241448
复制相似问题