Форум программистов, компьютерный форум CyberForum.ru

Считать данные из файла от одной строки до другой - C++

Восстановить пароль Регистрация
 
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
20.07.2016, 21:29     Считать данные из файла от одной строки до другой #1
Всем привет.

Задача такая: есть текстовый файл, в котором существует двумерный массив, записано все в файле так

Step number= 1
1 6
2 7
3 8
4 9
5 10


Step number= 2
1 56
2 34
3 34
4 34
5 56


Step number= 3
1 60
2 70
3 70
4 70
5 60


Step number= 4
1 100
2 120
3 120
4 120
5 100

и т.д.

Задача считать массив, находящийся между, например Step number 3 и Step number 4.
То есть, как я понимаю нужно искать в файле строку Step number 3, это один цикл, он перемещает каретку на нужное место и второй цикл, который считывает данные в двумерный массив до строки Step number 4.

Как это реализовать технически?

начало функции смог только написать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void read_from_file(){
cout<<"Working of function read_from_file()"<<endl;
    // open text file
        ifstream  filestr;
        filestr.open ("Results.txt", ios_base::in);
         if(filestr == NULL)
             {
                 cout << "error! didn't open the file!"<<endl;
 
             }
         else cout<<"The file has been opened!"<<endl;
 
         /*цикл поиска и вывод в консоль организуем следующим образом
          *считывать до тех пор пока не встретиться Step number= n
          * далее в цикле выводим содержимое, до тех пор, пока не встретим фразу Step number= n+1
         */
         while ( getline(filestr, "Step number 3"))
           {
               // Process str
           }
         filestr.close();
         cout << "The file has been closed!"<<endl<<endl;
}
Добавлено через 1 час 2 минуты
подскажите кто-нибудь...

C++
1
2
3
4
5
6
7
8
9
while ( getline(filestr,S))
    {
        if(S=="Step number= 3")
 
            //записать данные в двумерный массив
            // как?
 
       if(S=="Step number= 4") break;
    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2016, 21:29     Считать данные из файла от одной строки до другой
Посмотрите здесь:

C++ считать данные из xls файла
C++ Исправить код (считать данные из файла)
C++ считать одной строкой с файла
C++ Бинарные файлы: считать данные из одного файла и переписать в другой
C++ Считать данные из строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
20.07.2016, 21:40     Считать данные из файла от одной строки до другой #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int a[5][2];
while ( getline(filestr,S))
    {
        if(strcmp(S,"Step number= 3")==0)
        {
            for(int i=0;i<5;i++)
            {
                 filestr>>a[i][0];
                 filestr>>a[i][1];
            }
            break;
         }
    }
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
20.07.2016, 21:52  [ТС]     Считать данные из файла от одной строки до другой #3
Кажется, я уже пробовал нечто подобное.. Вот такая ошибка выдается:

error: cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'
if(strcmp(S,"Step number= 3")==0)
^

Добавлено через 1 минуту
zss, видите http://www.cplusplus.com/reference/cstring/strcmp/ тут переменные аргумента типа char
casper007
61 / 61 / 21
Регистрация: 12.12.2013
Сообщений: 375
20.07.2016, 21:57     Считать данные из файла от одной строки до другой #4
C++
1
2
3
4
5
6
std::string X="KA  AK";
 
std::string Y="AA";
size_t found=X.find(Y);
if (found == std::string::npos)
 std::cout << "Not found";
Как сравнить две переменные string
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
20.07.2016, 22:09  [ТС]     Считать данные из файла от одной строки до другой #5
zss, тут вроде бы у Вас изящно получается, я поменял на
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 char S;
 char f='Step number= 1';
 char u=0;
 
 
 int as[5][2];
 
 
 while (filestr.eof())
     {
         if(strcmp(S,f)==0)
         {
             for(int i=0;i<5;i++)
             {
                  filestr>>as[i][0];
                  filestr>>as[i][1];
             }
             break;
          }
     }
тоже не работает.

Можно все как-то в одном цикле сделать?
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
20.07.2016, 22:25     Считать данные из файла от одной строки до другой #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  char S[16];
  const char* f="Step number= 1";
 // char u=0;
  int as[5][2];
 
 
     while ( !filestr.eof()  ) //   ! не конец файла а лучше написать while(true)
     {
         getline(filestr,S);
         if(filestr.eof())
             break;
         if(strcmp(S,f)==0)
         {
             for(int i=0;i<5;i++)
             {
                  filestr>>as[i][0];
                  filestr>>as[i][1];
             }
             break;
          }
     }
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
20.07.2016, 22:45  [ТС]     Считать данные из файла от одной строки до другой #7
zss, спасибо!

Я сделал чуть иначе, по Вашему примеру.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   string S;
 //const string f="Step number= 3";
 string f="Step number= 7";
 char u=0;
 
 
 int as[5][2];
 
 
while ( getline(filestr,S))
     {
         if(S.compare(f)==0)
         {
             for(int i=0;i<5;i++)
             {
                  filestr>>as[i][0];
                  filestr>>as[i][1];
             }
             break;
          }
     }
Это тоже годится?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2016, 08:42     Считать данные из файла от одной строки до другой
Еще ссылки по теме:

C++ Считать данные из текстового файла по условию и записать их в другой текстовый файл (файловый ввод/вывод)
Считать текст из файла и записать в другой только строки, не содержащие определенных символов C++
Считать матрицу из файла, транспонировать и вернуть в другой файл C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
21.07.2016, 08:42     Считать данные из файла от одной строки до другой #8
Тогда просто
C++
1
if(S==f)
Yandex
Объявления
21.07.2016, 08:42     Считать данные из файла от одной строки до другой
Ответ Создать тему
Опции темы

Текущее время: 06:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru