Уже в течение 5 дней пытаюсь разобраться с необычным поведением куска программы, который должен читать файлы. Вот он:
//Вот инклуды, вообще они в файле map.h
#include <ncurses.h>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <fstream>
#include "mapfield.h"
int Map::loadMap ( )
        {
                std::ifstream fin ( "test_map.map" );
                fin.unsetf ( std::ios_base::skipws );
                if ( !fin.is_open ( ) )
                    exit ( -1 );
                std::ofstream fout ( "test_map_log.map" ); //лог файл для отладки, выводит то, что читается в buf
                int i = 0;
                fin >> mCameraX >> mCameraY; 
                fout << mCameraX << mCameraY;
                
                char buf = 'a';
               for ( i = 0; i < mWholeMapSizeX * mWholeMapSizeY; i++ )  
               //while ( !fin.eof ( ) )
                        {
                               fin >> buf;
                               fout << buf;
                               MapField *mapfield = new MapField ( buf );
                               mapFields.push_back ( *mapfield );
                               delete mapfield;
                               
                        }
                return 0;
        }
Файл с картой лежит в той же директории, что и исполняемый файл. Ошибок открытия нет (проверка открытия проходит успешно). Gdb показывает, что данные из файла как бы читаются (все операторы выполняются, без ошибок), но при этом в buf ничего не записывается. Если в качестве условия поставить закомментированное while ( !fin.eof ( ) ), цикл уходит в бесконечный. А теперь самое забавное. Я решил попробовать написать отдельную программку, чтобы попробовать на ней различные варианты решения проблемы. Она работает. Код практически идентичен.
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
        
int main ( void )
    {
        std::ifstream fin ( "test.txt" );
        fin.unsetf( std::ios_base::skipws );
        
         if ( !fin.is_open ( ) ) 
            exit ( -1 ); 
  
        std::ofstream fout ( "test_log.txt" );
        char buf = 'a';
        
        while (  !fin.eof ( ) )
                {
                    
                      fin >> buf;
                      std::cout << buf;
                      fout << buf;
                }
        std::cout << std::endl << "That's all" << std::endl;
        system ( "sleep 2" );
        return 0;
    }






