fork(1) download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5. class File
  6. {
  7. string name;
  8. fstream fs;
  9. public:
  10. File( string name1):name(name1){};
  11. bool open(int mode=0);// 0 - read, else - write
  12. fstream &get_stream() {return fs;}
  13. string get_name() {return name;}
  14. ~File() {fs.clear(); fs.close(); }
  15. };
  16. bool File::open(int mode)
  17. {
  18. if(mode==0)
  19. fs.open(name.c_str(),ios::in);
  20. else
  21. fs.open(name.c_str(),ios::out);
  22. if(!fs)
  23. {
  24. return false;
  25. }
  26. return true;
  27. }
  28. class Str
  29. {
  30. string str;
  31. string max_str;
  32. unsigned max_len;
  33. public:
  34. Str():max_len(0),str(""),max_str(""){}
  35. string read_file_find_max(fstream &f);
  36. void write_file(fstream &f);
  37. };
  38. string Str::read_file_find_max(fstream &f)
  39. {
  40. while(!f.eof())
  41. {
  42. getline(f,str);
  43. if(str.length() > max_len)
  44. {
  45. max_len=str.length();
  46. max_str=str;
  47. }
  48. f>>ws;
  49. }
  50. return max_str;
  51. }
  52. void Str::write_file(fstream &f)
  53. {
  54. string s;
  55. while(1)
  56. {
  57. getline(cin,s);
  58. if(s=="") // ввели просто Enter- закончили ввод
  59. break;
  60. f<<s;
  61. f<<endl;
  62. }
  63. }
  64.  
  65.  
  66. int main()
  67. {
  68. File *file;
  69. Str *s;
  70. string m;
  71. // читаем из файла
  72. file=new File("f.txt");
  73. file->open();
  74. s= new Str;
  75. m = s->read_file_find_max(file->get_stream());
  76. cout << m << endl;
  77. delete file;
  78. delete s;
  79.  
  80. // пишем в файл
  81. file = new File("f2.txt");
  82. file->open(1);
  83. s= new Str;
  84. s->write_file(file->get_stream());
  85. delete file;
  86. delete s;
  87.  
  88. //читаем из созданного файла
  89. file=new File("f2.txt");
  90. file->open();
  91. s= new Str;
  92. m = s->read_file_find_max(file->get_stream());
  93. cout << m << endl;
  94. delete file;
  95. delete s;
  96. }
  97. /*
  98. f.txt
  99. sdfsdf fgedf
  100.  
  101. ssdf
  102. sdfffffffff fgfgff
  103. --------------
  104. f2.txt (тот, что ввели с клавиатуры)
  105. 123 rtrt
  106. 11111111111112 455555
  107. sdd
  108. fggf fg
  109.  
  110. */
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout