如何将std :: queue <char>复制到std :: string?</char>

时间:2013-01-06 21:00:28

标签: c++ reference char queue std

我正在努力解决这段代码:

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()将返回char&而我无法将其放入std::string

2 个答案:

答案 0 :(得分: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。但是,deque支持迭代器,这使得可以实现依赖底层存储的丑陋代码。

答案 1 :(得分:1)

您可以使用

output_string += (output_queue.front());

然后(稍后)reverse