C/C++ 值赋值到 std::queue<char*>

C/C++ Value Assignment to std::queue<char*>

本文关键字:lt char gt C++ queue 赋值 std      更新时间:2023-10-16

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

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

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

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

如果要从某个位置获取char *,则可以将其推送到类型为 std::queue<std::string> 的队列,字符串将被隐式构造。

如果您出于任何原因无法使用std::string(尽管对于简单情况,我无法考虑任何好的),您必须:

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