Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <sstream>
- #include <vector>
- #include <locale.h>
- #include <cmath>
- using namespace std;
- char d, n;
- char buffer;
- void TXTtoBIN(ifstream& in, ofstream& out)
- {
- float flag = NAN;
- float num;
- double dbl;
- if (in.is_open() && out.is_open()) {
- switch (n)
- {
- case '1' :
- while (in >> num)
- {
- out.write((char*)&num, sizeof(num));
- in.get(buffer);
- //cout << a << " ";
- if (buffer == '\n') {
- //cout << endl;
- out.write((char*)&flag, sizeof(flag));
- }
- }
- break;
- case '2' :
- while (in >> dbl)
- {
- out.write((char*)&dbl, sizeof(dbl));
- in.get(buffer);
- //cout << a << " ";
- if (buffer == '\n') {
- //cout << endl;
- out.write((char*)&flag, sizeof(flag));
- }
- }
- break;
- }
- }
- }
- void BINtoTXT(ifstream& in, ofstream& out)
- {
- float num;
- double dbl;
- if (in.is_open() && out.is_open()) {
- switch (n)
- {
- case '1':
- while (in.read(reinterpret_cast<char*>(&num), sizeof(num))) {
- if (isnan(num)) {
- out << endl; continue;
- }
- out << num << " ";
- }
- break;
- case '2':
- while (in.read(reinterpret_cast<char*>(&dbl), sizeof(dbl))) {
- if (isnan(dbl)) {
- out << endl; continue;
- }
- out << dbl << " ";
- }
- break;
- }
- }
- }
- int main(int argc, char* argv[])
- {
- /*string a = "gfgfg.txt";
- string dst;
- dst = a.substr(a.find(".") + 1);
- cout << (dst == "txt");*/
- string four = argv[4];
- setlocale(LC_ALL, "RUSSIAN");
- if (argc < 5)
- {
- cout << "не заданы все аргументы" << endl;
- return 0;
- }
- string src = argv[1], dst = src.substr(0, src.find_last_of(".") + 1);
- int method = 0;
- if (src.substr(src.find(".") + 1) == "txt") {
- if (four == "-b")
- {
- cout << "Исходный файл .txt, но выставлен аргумент -b"<< endl;
- return 0;
- }
- method = 1;
- dst += "bin";
- }
- else if (src.substr(src.find(".") + 1) == "bin") {
- if (four == "-t")
- {
- cout << "Исходный файл .bin, но выставлен аргумент -t" << endl;
- return 0;
- }
- method = 2;
- dst += "txt";
- }
- else
- {
- cout << "неверное расширение исходного файла" << endl;
- return 0;
- }
- string param1 = argv[2];
- string param2 = argv[3];
- if (param1.substr(0, param1.find_last_of("=") + 1) == "-d=") {
- d = param1[param1.length() - 1];
- }
- else if (param1.substr(0, param1.find_last_of("=") + 1) == "-n="){
- n = param1[param1.length() - 1];
- }
- else {
- cout << "неверно заданы аргументы" << endl;
- return 0;
- }
- if (param2.substr(0, param2.find_last_of("=") + 1) == "-d="){
- d = param2[param2.length() - 1];
- }
- else if (param2.substr(0, param2.find_last_of("=") + 1) == "-n="){
- n = param2[param2.length() - 1];
- }
- else {
- cout << "неверно заданы аргументы" << endl;
- getchar();
- return 0;
- }
- ifstream fin;
- ofstream fout;
- switch (method)
- {
- case 1:
- fin.open(src);
- fout.open(dst, ios_base::binary);
- TXTtoBIN(fin, fout);
- cout << "Успешная конвертация в bin";
- break;
- case 2:
- fin.open(src, ios_base::binary);
- fout.open(dst);
- BINtoTXT(fin, fout);
- cout << "Успешная конвертация в txt";
- break;
- }
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement