ofstream внутри массива все время пишет в один и тот же файл - PullRequest
0 голосов
/ 08 января 2019

У меня есть структура, как показано ниже: std :: list -> Включает список объектов в типе VolataliteAnalyzer * (это мой пользовательский класс) -> Объект VolataliteAnalyzer сохраняет объект ofstream, как показано в коде ниже. И я вызываю метод ниже, чтобы написать соответствующие файлы

void VolataliteAnalyzer::writeToFile (unsigned long orderBookId,double volatalite,double currentWarrantPrice,double stockPrice,double expireDate,double strikePrice)
{

    logger.logMessage(new MessageInfoLog(std::string(__PRETTY_FUNCTION__)+" Writing File For :"+std::to_string(orderBookId)));
    if (!warrantFile.is_open()) {
        std::string filePath = std::string(FILE_NAME)+std::string("_")+std::to_string(orderBookId)+std::string(FILE_EXT);
        warrantFile.open (filePath,std::ios_base::app);
        logger.logMessage(new MessageInfoLog(std::string(__PRETTY_FUNCTION__)+" Creating File:"+filePath));

    }

    warrantFile << this->getCurrentDate()+DELIMETER+std::to_string(volatalite)+DELIMETER+std::to_string(currentWarrantPrice)+DELIMETER+std::to_string(stockPrice)+DELIMETER+std::to_string(expireDate)+DELIMETER+std::to_string(strikePrice)+"\n";

} 

Однако, когда я вызываю этот метод для разных объектов в массиве, он всегда записывает в один и тот же файл. Но вместо этого он должен записывать в уникальные файлы для каждого объекта в массиве. Я проверял это много раз, но не смог понять причину. Я подозревал, что если объекты ofstream одиночные или что-то в этом роде?

class VolataliteAnalyzer {

public:

    double selectedVolatalite=0;

    VolataliteAnalyzer();
    void writeToFile(unsigned long orderBookId,double volatalite,double currentWarrantPrice,double stockPrice,double expireDate,double strikePrice);
    void finishWriting();
    bool loadFromFile(unsigned long orderBookId);
    void getSelectedVolatalite(int dayCount);

private:
        Logger& logger;
        std::ofstream warrantFile;
        std::ifstream warrantReader;
        std::string getCurrentDate();
        std::list<Volatalite *> dailyVolatalites;

        Volatalite* getVolatalite(std::string date);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...