标准::矢量<uchar>到字符* 数据丢失
std::vector<uchar> to char* data loss
我使用 cv::imencode
将 cv::Mat
作为 image/jpeg
编码为 vector<uchar>
,现在我想将该向量转换为type char *
。
vector<uchar> buf;
// print buf to stdout to ensure that data is valid here
for (auto c : buf)
cout << c << endl;
// cast vector to char
char *ch = reinterpret_cast<char*>(buf.data());
// print out value of char pointer
for(int i = 0; ch[i] != ' '; i++)
printf("log: %cn", ch[i]);
从这个问题中获取了矢量上的for循环。从std::vector<T>
到char *
的演员阵容是从这个问题中获取的。
问题现在似乎在类型转换过程中似乎有一些数据丢失。buf
包含有效的数据,我总是只获取????
的值ch
。
有什么想法在这里发生了什么?
与向量一起工作时,一切都很好,因为à向量是一个具有显式大小的动态数组。因此,它可以包含空值。
但是,接下来,您使用一个零终止的未签名字符数组。因此,它停止了第一个Null字符。它在您的代码中甚至是明确的。
for(int i = 0; ch[i] != ' '; i++)
printf("log: %cn", ch[i]);
(相关部分是ch[i] != 0
)
这就是为什么您在第一个null字符之后放松所有内容的原因。
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何获取C++字符数据类型的地址
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 在 std::vector<无符号字符中存储任意数据的方法>
- 在C++事务之间存储大量字符数据的有效方法
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 将空格作为单字符数据类型的输入?
- C++ - 使用结构数据类型将单词中的单个小写字符更改为大写,反之亦然
- 在结构数据类型中更改每个字符的 ASCII 值
- 为什么我不能从结构将数据输入到字符数组中?
- 使用二进制数据和无符号字符
- 如何将从第 2 个字符开始的字符串作为函数中的参数传递以进行递归,并约束数据 tiee 是函数中的字符串?
- 将文本文件数据读入字符数组时提取运算符的歧义
- C++将 txt 数据和字符读取到 2D 数组中
- 在结构之间复制字符数据
- 解压缩 TIFF 数据会打印随机字符
- 字符串中单个字符作为数组的数据类型是什么
- 如何在忽略 null 的同时将数据从 char [] 复制到常量字符 *
- 为什么 g++ 在将节点指向数据字符时返回'Segmentation fault'错误?