我正在使用 fstream 读取二进制文件并将信息存储在字符数组中:
int dataLength = 32;
int counter = 0;
char data[dataLength];
char PMTone[dataLength/4];
std::fstream *fs = new std::fstream(inputFileName,std::ios::in|std::ios::binary);
fs->read((char *)&data, dataLength);
//of the 32 characters in data[], I need first, 5th etc elements:
//fill first pmt info
for(int i=0; i<(dataLength/4); i++){
PMTone[i]=data[counter];
counter+=4;
}
现在我将 PMTone[7] 设置为 a 作为测试:
PMTone[7] = "a";
我得到错误:
mdfTree.cpp:92:21:错误:从 'const char*' 到 'char' 的无效转换 [-fpermissive]
当 PMTone[] 被定义为字符数组时,我不明白为什么 PMTone[] 中的元素是指向字符的指针。
当我将 PMTone[] 视为指向字符的指针数组时:
(*PMTone)[7] = "a";
我收到另一个我不明白的错误:
mdfTree.cpp:91:18: 错误: 数组下标的无效类型 'char[int]'
这似乎暗示编译器根本不认为 PMTone[] 是一个数组,而只是一个指向 char 的指针。
任何人都可以阐明这里发生的事情吗?为什么 PMTone[] 变成了一个指向字符的指针数组?