Advertisement
vlad_davydov

ConvertApp

Jul 14th, 2021
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <string>
  4. #include <fstream>
  5. #include <sstream>
  6. #include <vector>
  7. #include <locale.h>
  8. #include <cmath>
  9.  
  10.  
  11. using namespace std;
  12.  
  13. char d, n;
  14. char buffer;
  15.  
  16.  
  17. void TXTtoBIN(ifstream& in, ofstream& out)
  18. {
  19. float flag = NAN;
  20. float num;
  21. double dbl;
  22. if (in.is_open() && out.is_open()) {
  23.  
  24. switch (n)
  25. {
  26. case '1' :
  27. while (in >> num)
  28. {
  29. out.write((char*)&num, sizeof(num));
  30. in.get(buffer);
  31. //cout << a << " ";
  32. if (buffer == '\n') {
  33. //cout << endl;
  34. out.write((char*)&flag, sizeof(flag));
  35. }
  36. }
  37. break;
  38. case '2' :
  39. while (in >> dbl)
  40. {
  41. out.write((char*)&dbl, sizeof(dbl));
  42. in.get(buffer);
  43. //cout << a << " ";
  44. if (buffer == '\n') {
  45. //cout << endl;
  46. out.write((char*)&flag, sizeof(flag));
  47. }
  48. }
  49. break;
  50. }
  51. }
  52. }
  53.  
  54.  
  55. void BINtoTXT(ifstream& in, ofstream& out)
  56. {
  57.  
  58. float num;
  59. double dbl;
  60.  
  61.  
  62. if (in.is_open() && out.is_open()) {
  63. switch (n)
  64. {
  65. case '1':
  66. while (in.read(reinterpret_cast<char*>(&num), sizeof(num))) {
  67. if (isnan(num)) {
  68. out << endl; continue;
  69. }
  70. out << num << " ";
  71. }
  72. break;
  73. case '2':
  74. while (in.read(reinterpret_cast<char*>(&dbl), sizeof(dbl))) {
  75. if (isnan(dbl)) {
  76. out << endl; continue;
  77. }
  78. out << dbl << " ";
  79. }
  80. break;
  81. }
  82. }
  83. }
  84.  
  85.  
  86. int main(int argc, char* argv[])
  87. {
  88. /*string a = "gfgfg.txt";
  89. string dst;
  90.  
  91. dst = a.substr(a.find(".") + 1);
  92. cout << (dst == "txt");*/
  93.  
  94. string four = argv[4];
  95.  
  96.  
  97. setlocale(LC_ALL, "RUSSIAN");
  98.  
  99.  
  100.  
  101.  
  102.  
  103. if (argc < 5)
  104. {
  105. cout << "не заданы все аргументы" << endl;
  106. return 0;
  107. }
  108.  
  109. string src = argv[1], dst = src.substr(0, src.find_last_of(".") + 1);
  110.  
  111. int method = 0;
  112. if (src.substr(src.find(".") + 1) == "txt") {
  113. if (four == "-b")
  114. {
  115. cout << "Исходный файл .txt, но выставлен аргумент -b"<< endl;
  116. return 0;
  117. }
  118. method = 1;
  119. dst += "bin";
  120. }
  121. else if (src.substr(src.find(".") + 1) == "bin") {
  122. if (four == "-t")
  123. {
  124. cout << "Исходный файл .bin, но выставлен аргумент -t" << endl;
  125. return 0;
  126. }
  127. method = 2;
  128. dst += "txt";
  129. }
  130. else
  131. {
  132. cout << "неверное расширение исходного файла" << endl;
  133. return 0;
  134. }
  135.  
  136. string param1 = argv[2];
  137. string param2 = argv[3];
  138.  
  139. if (param1.substr(0, param1.find_last_of("=") + 1) == "-d=") {
  140. d = param1[param1.length() - 1];
  141. }
  142. else if (param1.substr(0, param1.find_last_of("=") + 1) == "-n="){
  143. n = param1[param1.length() - 1];
  144. }
  145. else {
  146. cout << "неверно заданы аргументы" << endl;
  147. return 0;
  148. }
  149.  
  150.  
  151. if (param2.substr(0, param2.find_last_of("=") + 1) == "-d="){
  152. d = param2[param2.length() - 1];
  153. }
  154. else if (param2.substr(0, param2.find_last_of("=") + 1) == "-n="){
  155. n = param2[param2.length() - 1];
  156. }
  157. else {
  158. cout << "неверно заданы аргументы" << endl;
  159. getchar();
  160. return 0;
  161. }
  162.  
  163. ifstream fin;
  164. ofstream fout;
  165. switch (method)
  166. {
  167. case 1:
  168. fin.open(src);
  169. fout.open(dst, ios_base::binary);
  170. TXTtoBIN(fin, fout);
  171. cout << "Успешная конвертация в bin";
  172. break;
  173. case 2:
  174. fin.open(src, ios_base::binary);
  175. fout.open(dst);
  176. BINtoTXT(fin, fout);
  177. cout << "Успешная конвертация в txt";
  178. break;
  179. }
  180.  
  181. fin.close();
  182. fout.close();
  183.  
  184.  
  185. return 0;
  186.  
  187.  
  188. }
  189.  
  190.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement