我试图将其传递给我的项目的另一部分,要求它是一个向量

unsigned char vch[65];

unsigned int size() const { return GetLen(vch[0]); }
const unsigned char* begin() const { return vch; }
const unsigned char* end() const { return vch + size(); 


std::vector<unsigned char> Raw() const
{
        return (vch, vch + size());
}

我收到了错误

 could not convert '(const unsigned char*)(&((const CPubKey*)this)-
CPubKey::vch)' from 'const unsigned char*' to 'std::vector<unsigned char*>'

#1楼 票数:11 已采纳

return (vch, vch + size());

这使用逗号运算符 - 长话短说,写

return std::vector<unsigned char>(vch, vch + size());

要么

std::vector<unsigned char> vec(vch, vch + size())
return vec;

代替。 (后者在语义上是等效的,但在可读性方面更可取)或者使用C ++ 11:

return {vch, vch + size()};

这确实有效,因为带有指针的braced-init-list无法转换为initializer_list<unsigned char> [over.match.list] / 1:

当非聚合类类型T被列表初始化时,8.5.4指定根据本节中的规则执行重载解析,重载决策分两个阶段选择构造函数:

  • 最初,候选函数是类T [..]的初始化列表构造函数(8.5.4)

  • 如果找不到可行的初始化列表构造函数,则再次执行重载解析,其中候选函数是类T所有构造函数,参数列表由初始化列表的元素组成。

现在,有一个可行的初始化列表构造函数吗? [over.ics.list]:

  1. 否则,如果参数类型是std::initializer_list<X> 并且初始化列表的所有元素都可以隐式转换为X ,[..]

10.除上述列举的所有情况外, 不得进行任何转换。

显然没有从unsigned char*unsigned char隐式转换,因此选择了迭代器对构造函数模板。 演示

#2楼 票数:0

它可能无法直接回答答案。

但问题是为什么在使用std::stringstd::basic_string<unsigned char>而不是std :: vector时使用向量,如下所示:

unsigned char a[]="1234";
std::basic_string<unsigned char> v=a;

  ask by Minato translate from so

未解决问题?本站智能推荐:

1回复

如何将CMSampleBuffer转换为std :: vector ?

我的AVCaptureVideoDataOutputSampleBufferDelegate方法具有图像流: 然后,我想获取sampleBuffer并将其提供给C ++ openalrp库,以识别哪个需要图像字节或原始像素数据。 我应该使用什么函数以及如何将sampleBuffer转换
3回复

如何将char *转换为std :: vector?

我有一个char *变量: 我怎样才能将它转换为std :: vector? 施法将给我一个错误。
2回复

将char *转换为std :: vector

是否有一种快速(CPU)方法将char数组转换为std::vector<char> ? 我的功能看起来像这样:
2回复

将std :: vector转换为char *

我是一名从事项目研究的c ++学生,它使用简单的密码来接收和编码消息。 为此,该程序接受每个单词作为字符串,将字符串转换为字符向量,然后修改每个字符,然后再将其存储在文件中。 在将编码后的消息返回到主函数的行中,我收到以下错误消息:<无法将std::vector<char, st
3回复

将 std::string 转换为 std::vector

我正在使用一个接受数据作为char vector的库。 我需要将一个string传递给库。 我考虑使用接受迭代器的std::vector构造函数来执行转换 - 但想知道是否有更好的方法来做到这一点?
1回复

将unsigned [char,short,int,long]转换为double的结果不一致

给出输出 为什么结果不一致,某些类型产生-10,而其他类型产生巨大价值?
4回复

将std :: string转换为vector

由于要将一些数据传递到过时的API,因此我试图将std::string转换为char* (复制而不是强制转换)。 从表面上看,有很多方法可以做到这一点,但有人建议我将它作为一个明智的载体来进行。 但是,当我尝试这样做时,结果是乱码。 代码如下: (请注意令人不快的C强制转换-使
1回复

从std :: vector映射 到Eigen :: VectorXi

有没有一种方法可以按照以下方式将std::vector<unsigned>直接映射到Eigen::VectorXi ? 我想在这两个步骤之间跳过以下步骤: