gpt4 book ai didi

c++ - 将 int 数组转换为字符串的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-27 23:08:08 27 4
gpt4 key购买 nike

例如,我在想转换整数数组的最佳方法是什么

int array[] = {0x53,0x74,0x61,0x63,0x6B,0x4F,0x76,0x65,0x72,0x66,0x6C,0x6F,0x77,0x00}

对于一个字符串,上面的整数数组等价于:

int array[] = {'S','t','a','c','k','O','v','e','r','f ','l','o','w',0}

所以结果字符串将是

std::string so("StackOverflow");

我正在考虑使用 foreach 遍历 eacht 元素并通过将其转换为 char 将其添加到字符串中,但我想知道是否有更清洁/更快/更整洁的方法来执行此操作?

最佳答案

int 可以隐式转换为 char,您不需要任何转换。所有标准容器都有采用一对迭代器的构造函数,因此您可以传递数组的开头和结尾:

std::string so( std::begin(array), std::end(array) );

这可能不会比手动循环快,但我认为它符合更整洁的标准。

还有一种干净的方法可以对指针数组做同样的事情。使用 Boost Indirect Iterator:

#include <boost/iterator/indirect_iterator.hpp>

std::string s (
boost::make_indirect_iterator(std::begin(array)),
boost::make_indirect_iterator(std::end(array)) );

我刚刚注意到的另一件事 - 您不需要 int 数组中的 0 来标记字符串的结尾。 std::end 将推断出数组的大小,而 0 实际上将在结果字符串中结束。

关于c++ - 将 int 数组转换为字符串的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863063/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com