PDA

Просмотр полной версии : Задачка по С++


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
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;
}