如何将char矢量转换为char数组?

时间:2016-10-24 00:57:04

标签: c++ arrays vector type-conversion

我正在读取文件(图像)的字节,然后转换为base64。

字节被写入一个名为buffer的char向量,因为我没有找到将文件中的字节写入char数组的工作示例

我像这样做char矢量:

ifstream infile("image.png", ios_base::binary);

infile.seekg(0, ios_base::end);
size_t length = infile.tellg();
infile.seekg(0, ios_base::beg);

vector<char> buffer;
buffer.reserve(length);
copy(istreambuf_iterator<char>(infile),
    istreambuf_iterator<char>(),
    back_inserter(buffer)); infile.read(&buffer[0], length);

base64编码功能是:

int base64_encode(unsigned char *source, size_t sourcelen, char *target, size_t targetlen);

我需要将base64编码的文本发送到网站,以便它可以显示在页面上。例如。

1 个答案:

答案 0 :(得分:2)

在c ++中,向量是动态分配的数组。无论何时调用.push_back()方法,都会使用附加在数组末尾的新数据重新分配数组。如果你真的需要将数据从向量传输到常规数组,你可以使用for循环将数据分配给数组,如下所示:

for (int i = 0; i < vec.size() && i < arrLen; i++) {
    arr[i] = vec[i];
}

虽然考虑向量的一个更好的方法是动态分配的数组,但是将向量的第一个元素的原始指针传递给函数。

foo(&vec[0]);

OR

foo(vec.begin());