1

我正在尝试将 char* 值从循环分配到队列中。我一直复制指针而不是分配数据本身。我觉得有一个简单的答案,但我找不到一个很好的例子。

例子

while(something) {
    next = queue.front();
    queue.pop();
    while(something) {
        /* do work */
        /* text has new value of char* */
        queue.push(text);
    }
}

显然,这不起作用,因为当我为文本分配一个新值时,队列中的所有条目都会变成那个新值。我需要知道如何进行正确的复制/分配。

4

1 回答 1

5

改为使用std::queue<std::string>std::string来保留字符串。

如果你从某个地方得到一个char *,你可以把它推到类型队列中std::queue<std::string>,字符串将被隐式构造。

如果您因任何原因不能使用 a std::string(尽管对于简单的情况,我想不出任何好的方法),您必须:

  1. 获取字符串长度(例如使用strnlen)。
  2. 分配该大小的新 char 数组
  3. 从当前位置复制内容并将填充数组的指针推送到队列中。
  4. 退出队列时,您必须记住释放 2 中分配的数组。
于 2012-04-06T21:21:11.443 回答