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

Вывод данных из файла в массив - C++

Восстановить пароль Регистрация
 
 
aleika
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 35
30.12.2012, 22:37     Вывод данных из файла в массив #1
Здравствуйте Уважаемые дамы и господа.
Гуглил, читал но что-то никак не разберусь.
Имеется тхт файлик
Пример входного файла:
122235739687398670326509273096523096709239652386492036509
83475689723698723987569823759827385789237582378957239857893275.71
779077967857.8

Как загнать сие в массив тоесть загнать все подряд с пробелами разделающими строчки.
Был бы благодарен ответам, а лучше прмиерам.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
30.12.2012, 22:42     Вывод данных из файла в массив #2
aleika, std::getline + std::string
aleika
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 35
30.12.2012, 22:46  [ТС]     Вывод данных из файла в массив #3
Цитата Сообщение от go Посмотреть сообщение
aleika, std::getline + std::string
спс. конечно, я надеялся немного поподробнее ответ получить) ну погуглю и попробую разобраться и с этим.
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
30.12.2012, 23:20     Вывод данных из файла в массив #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
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
int main(){
    FILE* f;
    f=fopen("1.txt","r");
    int count = 0;
    int i = 0;
    while(true)
    {
        fscanf(f,"%d", &i);
        if (feof(f)) break;
        count++;
    }
    fclose(f);
    f=fopen("1.txt","r");
    int* mas = new int[(int)count];
    i=0;
    while(!feof(f))
    {
        fscanf(f,"%d", &(mas[i++]));
    }
    fclose(f);
    const int size = (int)count;
    for (int i=0; i<size; i++){
            cout <<  mas[i]<< " ";      
    }
    getch();
    return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
30.12.2012, 23:24     Вывод данных из файла в массив #5
tokar2, а точно вот это видели?
Цитата Сообщение от aleika Посмотреть сообщение
Пример входного файла:
aleika
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 35
30.12.2012, 23:32  [ТС]     Вывод данных из файла в массив #6
Начал чтото придумывать.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <fstream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    char buf[1000];
    ifstream f("D:\\1.txt");
    if (!f.is_open()) 
    {
        cout << "Error! not found" << endl; 
        _getch();
        return 1;
    }
 
 
// тут думаю как загнать данные в массив buf
 
 
 
 
    f.close();
    _getch();
    return 0;
}
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
30.12.2012, 23:44     Вывод данных из файла в массив #7
Вот так норм!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
int main(){
    FILE* f;
    f=fopen("1.txt","r");
    int count = 0;
    int i = 0;
    while(true)
    {
        fscanf(f,"%c", &i);
        if (feof(f)) break;
        count++;
    }
    fclose(f);
    f=fopen("1.txt","r");
     char* mas = new  char[(int)count];
    i=0;
    while(!feof(f))
    {
        fread(&mas[i++], sizeof(char), 1, f);
    }
    fclose(f);
    const int size = (int)count;
    for (int i=0; i<size; i++){
            cout <<  mas[i]<< " ";      
    }
    getch();
    return 0;
}
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
30.12.2012, 23:51     Вывод данных из файла в массив #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <fstream>
#include <algorithm>
#include <string>
 
int main()
{
  std::ifstream ifs("1.txt");
  std::string   result;
 
  ifs.unsetf( std::ios_base::skipws );
  std::copy( std::istream_iterator<char>(ifs), 
             std::istream_iterator<char>(), std::back_inserter(result));
}
Добавлено через 1 минуту
http://www.cyberforum.ru/blogs/131347/custom19.html
aleika
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 35
31.12.2012, 00:04  [ТС]     Вывод данных из файла в массив #9
Цитата Сообщение от tokar2 Посмотреть сообщение
Вот так норм!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
int main(){
    FILE* f;
    f=fopen("1.txt","r");
    int count = 0;
    int i = 0;
    while(true)
    {
        fscanf(f,"%c", &i);
        if (feof(f)) break;
        count++;
    }
    fclose(f);
    f=fopen("1.txt","r");
     char* mas = new  char[(int)count];
    i=0;
    while(!feof(f))
    {
        fread(&mas[i++], sizeof(char), 1, f);
    }
    fclose(f);
    const int size = (int)count;
    for (int i=0; i<size; i++){
            cout <<  mas[i]<< " ";      
    }
    getch();
    return 0;
}
А немголи бы вы кое что пояснить сейчас разбираюсь в этом коде. Возникло пару вопросов.
Зачем вы дважды окрываете закрываете файл.?
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
31.12.2012, 00:08     Вывод данных из файла в массив #10
Первый раз чтобы посчитать количество элементов в файле, чтобы выделить достаточно памяти под массив.
Цитата Сообщение от aleika Посмотреть сообщение
while(true)
* * {
* * * * fscanf(f,"%c", &i);
* * * * if (feof(f)) break;
* * * * count++;
* * }
Второй раз я эти элементы засовываю в мисив.
Цитата Сообщение от aleika Посмотреть сообщение
while(!feof(f))
* * {
* * * * fread(&mas[i++], sizeof(char), 1, f);
* * }
aleika
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 35
31.12.2012, 00:09  [ТС]     Вывод данных из файла в массив #11
Цитата Сообщение от tokar2 Посмотреть сообщение
Первый раз чтобы посчитать количество элементов в файле, чтобы выделить достаточно памяти под массив.

Второй раз я эти элементы засовываю в мисив.
нее эт я понял=)) просто не понятно почему нельзя его не закрывать.. а продолжить.. хотя когда я это написал я понял зачем)
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
31.12.2012, 00:16     Вывод данных из файла в массив #12
После считывания количества элементов курсор будет в конце файла, а нам нужно чтобы он был в начале, вот поэтому и два раза открываю! Можно было вместо этого
C++
1
2
fclose(f);
    f=fopen("1.txt","r");
вот это написать
C++
1
fseek(f,0,SEEK_SET);
Добавлено через 55 секунд
Это перенесет курсор в начало файла!
aleika
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 35
31.12.2012, 00:30  [ТС]     Вывод данных из файла в массив #13
Цитата Сообщение от tokar2 Посмотреть сообщение
После считывания количества элементов курсор будет в конце файла, а нам нужно чтобы он был в начале, вот поэтому и два раза открываю! Можно было вместо этого
C++
1
2
fclose(f);
    f=fopen("1.txt","r");
вот это написать
C++
1
fseek(f,0,SEEK_SET);
Добавлено через 55 секунд
Это перенесет курсор в начало файла!
дааа спс я эт тоже сразу сообразил начал гуглить как перекинуть курсор на начало=)
вопрос: как изменить мне строчку с созданием массива чтобы она была не динамической.?
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
31.12.2012, 00:37     Вывод данных из файла в массив #14
Вот:
C++
1
char mas[count];
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
31.12.2012, 01:08     Вывод данных из файла в массив #15
Цитата Сообщение от aleika Посмотреть сообщение
вопрос: как изменить мне строчку с созданием массива чтобы она была не динамической.?
Используй std::string
aleika
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 35
31.12.2012, 02:14  [ТС]     Вывод данных из файла в массив #16
Цитата Сообщение от tokar2 Посмотреть сообщение
Вот:
C++
1
char mas[count];
12 студия брякнула при этом char mas[count]; что : Выражение должно иметь константное значение.
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
31.12.2012, 11:42     Вывод данных из файла в массив #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
int main(){
    FILE* f;
    f=fopen("1.txt","r");
    int count = 0;
    int i = 0;
    while(true)
    {
        fscanf(f,"%c", &i);
        if (feof(f)) break;
        count++;
    }
    fclose(f);
    f=fopen("1.txt","r");
    const int size = count;
    char mas[size];
    i=0;
    while(!feof(f))
    {
        fread(&mas[i++], sizeof(char), 1, f);
    }
    fclose(f);
    for (int i=0; i<size; i++){
            cout <<  mas[i]<< " ";      
    }
    getch();
    return 0;
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.12.2012, 12:53     Вывод данных из файла в массив #18
Цитата Сообщение от tokar2 Посмотреть сообщение
C++
1
2
const int size = count;
char mas[size];
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
31.12.2012, 13:23     Вывод данных из файла в массив #19
Цитата Сообщение от tokar2 Посмотреть сообщение
char mas[size];
Чтобы так писать, требуется, чтобы size был известен на этапе компиляции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2012, 14:43     Вывод данных из файла в массив
Еще ссылки по теме:

Вывод данных из файла по столбцам C++
C++ Вывод строки из файла в массив
Массив вывод данных C++

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

Или воспользуйтесь поиском по форуму:
aleika
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 35
31.12.2012, 14:43  [ТС]     Вывод данных из файла в массив #20
Цитата Сообщение от soon Посмотреть сообщение
да я тоже сразу так попробывал но понял что это неправильно=)

Добавлено через 2 минуты
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Чтобы так писать, требуется, чтобы size был известен на этапе компиляции.
проясните пожалуйста как это реализовать?
Yandex
Объявления
31.12.2012, 14:43     Вывод данных из файла в массив
Ответ Создать тему
Опции темы

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