c++混合指向不同char类型的指针
C++ mixing pointers to different char types
我正在用c++编写一个程序,该程序接受ACT (Adobe Color Table)文件并将其转换为纯文本可读的JASC-PAL文件。我想从ACT文件中读取二进制数据并将其存储在内存中以供使用。我写了下面的代码来做到这一点,它使用BCC55构建。问题是我得到一个构建警告:"警告W8079:在函数read_file()中混合指针到不同的'char'类型"。
unsigned char * memblock;
bool read_file()
{
int filesize;
ifstream act ("test.act", ios::binary|ios::ate);
if (act.is_open())
{
filesize = act.tellg();
act.seekg(0);
memblock = new unsigned char [filesize];
act.read(memblock, filesize);
act.close();
cout << "Color Table loaded to memory." << endl;
return true;
}
else
{
cout << "Failed to open file." << endl;
return false;
}
}
在Embarcadero文档wiki中查找此警告,似乎是因为我将无符号char指针传递给期望常规char指针的函数。它说这在技术上是不正确的,但通常是无害的。我的问题是,严格来说,如果这是不正确的,那么我如何在不引起W8079警告的情况下这样做?既然警告是无害的,而且我的代码也能像预期的那样工作,我应该为此费心吗?
添加cast。在这种情况下,我将使用简单的C强制转换。
act.read((char*)memblock, filesize);
但是你也可以使用reinterpret_cast
act.read(reinterpret_cast<char*>(memblock), filesize);
,但这使它看起来比它更重要。正如文档所说,这是无害的。
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何将整数分配给 char 类型的变量
- 将char类型指定给int以打印相应的ASCII字符
- 在 C++11 标准中,为什么要依赖 char 类型实现?
- 如何使用CIN将输入整数值获取到char类型变量中
- 有没有办法比较用 int 初始化的 char 类型的数组的 2 个元素
- 如何为 char** 类型变量提供适当的值,以便将其分配给字符串变量
- 不能将 "const char*" 类型的值分配给类型 "int" 的实体
- std::cin 无法将命令行中的用户输入传递给具有 char 类型的变量吗?
- 'char' c++ 类型的数组中的最后一个符号
- C++:无法使用条件类型在模板函数中使用 'double' 类型的 lvalue 初始化 'char*' 类型的参数
- 不能将 "const char *" 类型的值分配给类型为 "LPSTR" 的实体
- 如何使用boost.asio读取整个Char类型的数据
- 如何从const char *类型字符串中删除新线字符
- 为什么允许将字符串文字分配给 C++ 中 char * 类型的指针
- 如何将 char 类型数组传递给函数并将第一个字符数组复制到第二个图表数组并使用 c++ 进行比较
- 在char*类型上使用static_cast获取地址,并获得24位和48位地址
- CIN使用char类型阵列
- 错误:“ const char*”类型的操作数和“ const char [7]”类型为二进制“操作员 ”