C/C++ 值赋值到 std::queue<char*>
C/C++ Value Assignment to std::queue<char*>
我正在尝试从循环将 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
(尽管对于简单情况,我无法考虑任何好的),您必须:
- 获取字符串长度(例如,使用
strnlen
)。 - 分配该大小的新字符数组
- 从当前位置复制内容,并将填充数组的指针推送到队列。
- 从队列中拉出时,您必须记住释放在 2 中分配的数组。