我如何将字符向量转换为字符数组

How can I convert a char vector to a char array?

本文关键字:字符 转换 数组 向量      更新时间:2023-10-16

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

字节被写入一个称为缓冲区的字符向量,因为我还没有找到将字节从文件写入字符数组的工作示例

我这样做字符向量:

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编码的文本到一个网站,以便它可以显示在一个页面上,例如。

c++中,向量是动态分配的数组。无论何时调用.push_back()方法,都会重新分配数组,并在数组末尾添加新数据。如果你确实需要将数据从vector转换为普通数组,你可以使用for循环将数据赋值给数组,如下所示:

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

考虑到vector只是动态分配的数组,一个更好的方法是将vector的第一个元素的原始指针传递给函数。

foo(&vec[0]);

foo(vec.begin());