を使用してバイナリ I/O 用のファイルを作成して開いていないのではないかと思いますstd::fstream
BinarySearchFile::BinarySearchFile(std::string file_name){
// concatenate extension to fileName
file_name += ".dat";
// form complete table data filename
data_file_name = file_name;
// create or reopen table data file for reading and writing
binary_search_file.open(data_file_name, std::ios::binary); // create file
if(!binary_search_file.is_open()){
binary_search_file.clear();
binary_search_file.open(data_file_name, std::ios::out | std::ios::binary);
binary_search_file.close();
binary_search_file.open(data_file_name), std::ios::out | std::ios::in | std::ios::binary | std::ios::ate;
}
try{
if(binary_search_file.fail()){
throw CustomException("Unspecified table data file error");
}
}
catch (CustomException &custom_exception){ // Using custom exception class
std::cout << custom_exception.what() << std::endl;
return;
}
}
私はデータを書いているので、これは本当だと思います
void BinarySearchFile::writeT(std::string attribute){
try{
if(binary_search_file){
binary_search_file.write(attribute.c_str(), attribute.length());
}else if(binary_search_file.fail()){
throw CustomException("Attempt to write attribute error");
}
}
catch(CustomException &custom_exception){ // Using custom exception class
std::cout << custom_exception.what() << std::endl;
return;
}
}
ただし、このファイルは、読み取り可能なテキスト データを含む標準のテキスト ファイルです。文字列の文字や文字そのものをバイナリ形式(2byte char)で書きたい。RandomAccessFilestd::fstream
と同様の操作を試みています。
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _
質問: ファイルを正しく作成しましたか?バイナリ データが書き込まれていないのはなぜですか?