Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Задачка по С++ (https://forum.antichat.xyz/showthread.php?t=29449)

NaX[no]rT 19.12.2006 22:09

Задачка по С++
 
Вообщем есть файл, в нем примерно такие данные:
Код:

1 1 2 3 1
2 2 2 3 3
1 2 5 34 32
345 3 234 23 23

Как средствами С++ выдрать эти данные из файла и подготовить их к дальнейшей работе. Интересны ваши предложения, по решению данной задачи.

nc.STRIEM 19.12.2006 22:15

а че мало читалок файлов??
тем же ifstream можно, или fread() или fgetc() вариантов масса!
а ваше лучше раскажи куда те их записать то надо?? в масив? в чаровский или интовый?

NaX[no]rT 19.12.2006 22:33

В массив int

nc.STRIEM 19.12.2006 23:38

вот лови один из вариантов
Код:

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;

void main(void)
{
        FILE *f;
        f=fopen("1.txt","r");
        char c[16];
        int byf[128],i=0,j=0;

  while(1)
  {
    i=0;
        while(1)
        {
      c[i]=fgetc(f);
          if(c[i]==' ' || c[i]=='\n' || c[i]=='\t' || c[i]==EOF)
                break;
          i++;
        }
        byf[j]=atoi(c);
        j++;
        if(c[i]==EOF)
                break;
  }

                for(i=0;i<j;i++)
                        cout<<byf[i]<<endl;
       
}


NaX[no]rT 21.12.2006 01:34

Вариант, но не нравится мне) оставлю свою организацию тогда (:

_Great_ 21.12.2006 01:38

элементарно, что тут сложного?
создаем двухмерная массив (матрицу) и пишем туда числа.
ifstream/fscanf

nc.STRIEM 21.12.2006 02:21

Цитата:

Сообщение от NaX[no]r†
Вариант, но не нравится мне) оставлю свою организацию тогда (:

а что не нравиться?? те надо чтоб как матрицу сохраняло?? в двумерный массив

sni4ok 23.12.2006 04:58

решение
 
Код:

#include <string>
#include <vector>
#include <fstream>
#include <sstream>

int _tmain(int argc, _TCHAR* argv[])
{

        //вариант 1: загоняем все значения в вектор
        std::vector<int> buf;
        {
                std::ifstream f("C:/file.txt");
                std::copy(std::istream_iterator<int>(f),std::istream_iterator<int>(),std::back_inserter(buf));
        }

        //вариант 2: загоняем все значения в вектор векторов
        std::vector<std::vector<int> > buf2;
        std::ifstream f("C:/file.txt");
        {
                std::string tmp;
                while(std::getline(f,tmp,'\n')){
                        std::vector<int> buf;
                        std::stringstream ss;
                        ss << tmp;
                        std::copy(std::istream_iterator<int>(ss),std::istream_iterator<int>(),std::back_inserter(buf));
                        buf2.push_back(buf);
                }
        }
        return 0;
}



Время: 04:17