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] をテストとして設定しています。
PMTone[7] = "a";
エラーが発生します:
mdfTree.cpp:92:21: エラー: 'const char*' から 'char' への変換が無効です [-fpermissive]
PMTone[] が char の配列として定義されているのに、PMTone[] の要素が char へのポインターである理由がわかりません。
PMTone[] を文字へのポインターの配列として扱う場合:
(*PMTone)[7] = "a";
理解できない別のエラーが表示されます。
mdfTree.cpp:91:18: エラー: 配列添え字の型 'char[int]' が無効です
これは、コンパイラが PMTone[] を配列とはまったく見なさず、単に char へのポインターと見なしていることを意味しているようです。
ここで何が起こっているのかを明らかにできる人はいますか? PMTone[] が文字へのポインタの配列になったのはなぜですか?