1

我正在为这段代码苦苦挣扎:

std::queue<char> output_queue;
std::string output_string
// put stuff into output_queue
while (!output_queue.empty())
    {
    output_string.insert(0,(output_queue.front()));
    output_queue.pop();
    }

我不知何故不能这样做,因为std::queue<char>::front()会返回 achar&而我不能把它放入std::string.

4

2 回答 2

5

您缺少insert插入字符的参数。您需要指定该字符的数量:

output_string.insert(0, 1, output_queue.front());

如果您想让自己更轻松,您也可以使用std::deque代替std::queue并将其替换为:

std::deque<char> output_queue;
//fill output_queue in same way, but use push/pop_front/back instead of push/pop

std::string output_string(output_queue.begin(), output_queue.end());
output_queue.clear();

这几乎与现在相同,因为您queue实际上std::deque在后台默认使用 a 。然而deque,它支持迭代器,这使得这在没有依赖底层存储的丑陋代码的情况下成为可能。

于 2013-01-06T21:03:51.583 回答
1

您可以使用

output_string += (output_queue.front());

然后(一段时间后)reverse

于 2013-01-06T21:03:47.903 回答