Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2014, 20:38   #1
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию С++ Потоки и файлы

Привет всем! Программа ниже по идее должна принимать в качестве аргумента несколько файлов, помещать их в вектор, создавать исходящий файл и записывать в него текст из нескольких файлов. Однако через командную строку запускаю ехе, пишет - работа программы прекращена... Что подскажите?

Код:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

class Concatenation
{

private:

    int m_numbFiles;

    std::vector<std::string> m_OutputFile;

    std::ifstream m_ArrIstreams[];

    std::string m_ArrStrIn;

public:

    Concatenation( int, char*[] );
    void to_buffer();
    void output_file();

};

//--------------------------------------------------------

int main( int argc, char* argv[] )
{

    Concatenation C( argc, argv );

    C.to_buffer();
    C.output_file();

    std::system( "pause" );

    return 0;
}

//--------------------------------------------------------------

Concatenation::Concatenation( int argc, char* argv[] ) :
    m_numbFiles( argc )
{
    const int SIZE = 100;

    std::ifstream m_ArrIstreams[SIZE];

    for( int i=1; i<argc; i++ )
    {

        m_ArrIstreams[i-1].open( argv[i] ); // îòêðûâàåì âñå ôàéëû

        if( !argv[i] ){
            std::cerr << "Error: unable to open file!" << argv[i] << std::endl;
            m_isOpenAllFiles = false;
        }
    }
}
//----------------------------------------------------------------
void Concatenation::to_buffer()
{

    for( int i=0; i<m_numbFiles-1; i++ )
    {
        while( std::getline( m_ArrIstreams[i], m_ArrStrIn ) ){
            m_OutputFile.push_back( m_ArrStrIn );
            m_OutputFile.push_back( "\n " );
        }
    }
}
//---------------------------------------------------------------
void Concatenation::output_file()
{
    std::ofstream m_Ostream( "OutputFile.TXT" );

    for( int i=0; i<m_OutputFile.size(); i++ ){
        m_Ostream << m_OutputFile[i];
    }

    std::cout << "The file is recorded!" << std::endl;
}
igoreshka3333 вне форума Ответить с цитированием
Старый 28.12.2014, 23:21   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Код:
        if( !argv[i] ){
            std::cerr << "Error: unable to open file!" << argv[i] << std::endl;
            m_isOpenAllFiles = false;
        }
Я считаю, здесь ошибка: if( !argv[i] )
8Observer8 вне форума Ответить с цитированием
Старый 28.12.2014, 23:44   #3
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Код:
        if( !argv[i] ){
            std::cerr << "Error: unable to open file!" << argv[i] << std::endl;
            m_isOpenAllFiles = false;
        }
Я считаю, здесь ошибка: if( !argv[i] )
По-моему, это условие вообще никогда не будет true...

а по теме: std::ifstream m_ArrIstreams[SIZE] - объявлено два раза.

Последний раз редактировалось Smogg; 28.12.2014 в 23:48.
Smogg вне форума Ответить с цитированием
Старый 29.12.2014, 00:03   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Скорее всего, там имелось ввиду:

Код:
        m_ArrIstreams[i-1].open( argv[i] );

        if( !m_ArrIstreams[i-1].is_open() ){
            std::cerr << "Error: unable to open file!" << argv[i] << std::endl;
            m_isOpenAllFiles = false;
        }
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы и потоки.Ошибка akademochka Помощь студентам 6 23.03.2012 17:24
файлы и потоки N1b1V Общие вопросы Delphi 0 23.02.2011 16:27
Потоки и файлы mazak Общие вопросы C/C++ 2 28.07.2009 18:23