我如何将字符向量转换为字符数组
How can I convert a char vector to a char array?
我正在读取文件(图像)的字节,然后转换为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());
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 字符转换功能 std::isupper() & std::islower() C++17
- 将字符 * 转换为字符串 *
- 在编译时将常量字符* 转换为常量 char_type*
- 如何在 C/C++ 中将无符号字符*转换为无符号字符数组?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 无法使用字符串流将字符转换为字符串C++
- 将无符号字符 C++ 转换为 C#
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 无法<string>从"常量字符 []"转换为<类名>
- 不能将字符转换为整数吗?
- 编译时将字符*转换为字节
- CP1251:从字符* 转换为 wchar_t* 时的编码失真
- 将单个字符转换为 std::string 前缀 \x01
- PPM 将字符转换为 int 授予负数
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类
- 将常量字符* 转换为字符时出错