#include #include #include #include #include void writeBinaryFile(const std::string& inputFileName, const std::string& outputFileName) { std::ifstream inputFile(inputFileName); std::ofstream outputFile(outputFileName, std::ios::binary); if (!inputFile) { std::cerr << "Error opening input file: " << inputFileName << std::endl; std::exit(EXIT_FAILURE); } if (!outputFile) { std::cerr << "Error opening output file: " << outputFileName << std::endl; std::exit(EXIT_FAILURE); } std::string line; while (std::getline(inputFile, line)) { // Get the size of the string std::size_t size = line.size(); // Write size as 2 bytes (big-endian) uint16_t sizeInBytes = static_cast(size); outputFile.write(reinterpret_cast(&sizeInBytes), sizeof(sizeInBytes)); // Write the string followed by a null terminator outputFile.write(line.c_str(), size); // char nullChar = '\0'; // outputFile.write(&nullChar, sizeof(nullChar)); } if (outputFile.fail()) { std::cerr << "Error writing to file!" << std::endl; std::exit(EXIT_FAILURE); } inputFile.close(); outputFile.close(); } int main(int argc, char* argv[]) { if (argc != 3) { std::cerr << "Usage: " << argv[0] << " " << std::endl; return EXIT_FAILURE; } std::string inputFileName = argv[1]; // Input file name from args std::string outputFileName = argv[2]; // Output binary file name from args writeBinaryFile(inputFileName, outputFileName); std::cout << "Strings written to binary file successfully." << std::endl; return EXIT_SUCCESS; }