6 #include "../misc/definitions.h"
7 #include "../misc/utils.h"
14 main(int argc, char** argv)
16 std::cout << "Text splitter" << std::endl;
19 std::cout << "Usage: split_text file parts" << std::endl;
23 std::string base_name = argv[1];
24 std::cout << "Input file: " << base_name << std::endl;
25 std::ifstream input_file(base_name.c_str(), std::ios_base::binary);
28 std::cerr << "Error opening input file!" << std::endl;
32 usint parts = atoi(argv[2]);
33 usint size = fileSize(input_file);
34 usint part_size = (size + parts - 1) / parts;
35 std::cout << "Parts: " << parts << std::endl;
36 std::cout << "Part size: " << part_size << " bytes" << std::endl;
37 if(parts == 0 || part_size == 0)
39 std::cerr << "Invalid number of parts!" << std::endl;
42 std::cout << std::endl;
44 char* buffer = new char[part_size + 1];
46 for(usint n = parts; n > 0; n /= 10) { len++; }
48 for(usint i = 1; i <= parts; i++)
51 for(usint num = i; num > 0; num /= 10) { llen--; }
53 std::ostringstream out;
54 out << base_name << "." << std::string(llen, '0') << i;
55 std::ofstream part_file(out.str().c_str(), std::ios_base::binary);
56 input_file.read(buffer, part_size);
57 usint n = input_file.gcount();
59 part_file.write(buffer, n + 1);