C ++: не удается открыть файлы с помощью операции stringstream

0

Я редактирую существующий C++ код, так что он открывает несколько файлов с помощью stringsteam. У меня есть цикл с целым числом от 1 до 7, и есть 7 файлов, которые мне нужно открыть. Файлы называются PMAP1.txt... PMAP7.txt. Я пытаюсь открыть его так:

            ifstream precipfile;
            int j = 0;
            stringstream ss;
            string FileName;

            for(j=1;j<6;j++){

                ss <<"PMap" << j <<".txt" << endl;
                FileName = ss.str();
                precipfile.open(FileName.c_str(),ios::in);

                if( !precipfile.good() )
                   ReportFatalError( "Unable to find or open precipfile" );
            }

По какой-то причине это не работает. Он возвращает "Невозможно найти или открыть файл". Но если я открою один файл, просто используя одно имя файла напрямую, оно работает. Как:

                    string FileName = ( "PMap.txt" ); 
                    precipfile.open(FileName.c_str());

Это работает. Пожалуйста, помогите!

  • 1
    ss.str() каждый раз.
Теги:
c++11
file-io
stringstream
istringstream

2 ответа

4
Лучший ответ

Внутри цикла вы не stringstream объект stringstream

ss <<"PMap" << j <<".txt" << endl;

таким образом, вы сохраняете добавочный материал в stringstream, не удаляя предыдущий материал. Замените вышеприведенную строку в вашем цикле следующими двумя строками, чтобы правильно очистить stringstream на каждой итерации.

ss.str("");
ss <<"PMap" << j <<".txt" << endl;

Вот почему код работает только один раз - при первом очищении потока, но в последующих итерациях он содержит все символы, которые вы добавили при предыдущих итерациях.

  • 0
    Спасибо .. я попробую это
  • 0
    @ Равин Это сработало ??
Показать ещё 2 комментария
1

Ваша петля слишком мала - измените ее for (j = 1; j <= 7; j++).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню