错误: invalid conversion from ‘char’ to ‘char*’ [-fpermissive] 187 | ((char**)*(p_out_buf))[len] = '\0';
时间: 2024-09-18 15:14:33 浏览: 36
VCCString-int-string-char.txt.rar_conversion_vc string
这个错误提示“invalid conversion from 'char' to 'char*'”表示编译器试图将一个单个字符赋给一个指向字符的指针,但是这是不允许的,因为字符不是一个有效的地址。
在这一行代码 `((char**)*(p_out_buf))[len] = '\0';`,`'\0'` 是一个空字符,它是一个单独的字符,而 `((char**)*(p_out_buf))[len]` 目前指向的是之前复制到 `p_out_buf` 的内存区域,即之前读取到的字符串数据的结尾。
要解决这个问题,你应该确保在复制字符串后添加空字符 '\0' 到正确的位置,而不是直接将 '\0' 赋值给一个字符引用。如果你确实想在数组的末尾添加空字符,你需要确保 `p_out_buf` 已经指向了一个 `char` 类型的一维数组或者是 char** 类型的数组,其中每个元素都是指向 `char` 的指针。如果是后者,应该是:
```c++
if (p_out_buf && *p_out_buf) { // 检查是否分配成功并且非空
// 现在 *p_out_buf 是一个 char*,所以可以直接赋值
(*p_out_buf)[len] = '\0';
}
```
或者如果 `p_out_buf` 指向的是 `char[]` 类型,那么:
```c++
if (p_out_buf) { // 检查是否分配成功
((char*)(*p_out_buf))[len] = '\0'; // 直接用解引用后的指针
}
```
这两个版本假设 `p_out_buf` 存储的是一个指向字符串起始位置的指针,然后你可以通过解引用和索引访问最后一个字符并为其添加空字符。
阅读全文