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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Redivn
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 6
#1

Чтение из файла - C++

16.11.2014, 12:42. Просмотров 297. Ответов 6
Метки нет (Все метки)

Не знаю как нормально организовать чтение чисел из файла (числа в файле расположены через запятую)
пример файла:

14,79,..,4
68,74,..,43
..............
16,47,..,58

количество чисел в каждой строке само собой разное, доходит до 90 (максимум), но все числа в интервале int.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 12:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из файла (C++):

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

Чтение из файла. Повторное чтение файла - C++
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае некорректного ввода их в оный. Вот...

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip> #include <cstdlib> using namespace std; struct...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Чтение файла с несколькими знаками конца файла - C++
В файле несколько раз встречается ноль, и ни как не получается прочитать его полностью. Как можно решить данную проблему ?

6
nmcf
5356 / 4676 / 1566
Регистрация: 14.04.2014
Сообщений: 18,643
16.11.2014, 13:22 #2
В чём сложность? Надо в одномерный массив сохранять или как матрицу?
0
Redivn
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 6
16.11.2014, 13:30  [ТС] #3
не знаю как нормально обойти запятые, потому что до этих чисел есть еще полезная информация в виде текста и других чисел. В инете и на форумах нашел только:
1) считать в строку все
2) преобразовать строку в числа
Так как в строке куча другой информаци, то это как-то сложно будет. Других способов я не нашел.
+ раз так много чисел, то возможно вся информация в одну строку не влезет

Добавлено через 2 минуты
единственный простой вариант о котором я подумал - это скопировать эти числа в эксель и там автоматически разбить на столбцы через запятую..
0
nmcf
5356 / 4676 / 1566
Регистрация: 14.04.2014
Сообщений: 18,643
16.11.2014, 13:44 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Про другую полезную информацию не понятно, а конкретно ту структуру, какую ты описал, можно так прочитать при условии, что нет пробелов лишних между цифрами и запятыми и файл не пустой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    std::vector<std::vector<int>> v;
    int n, i = 0;
    v.push_back(std::vector<int>());
    std::ifstream ifs("d:\\data.txt");
    while (!ifs.eof())
    {
        ifs >> n;
        v[i].push_back(n);
        char c = ifs.get();
        if (ifs.eof()) break;
        if (c == '\n')
        {
            v.push_back(std::vector<int>());
            ++i;
        }
    }
1
Redivn
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 6
16.11.2014, 13:58  [ТС] #5
Спасибо! все круто, только я не понимаю почему после запятой не должно быть пробелов?

Добавлено через 2 минуты
то есть тогда нужно просто два раза
C++
1
  c = ifs.get();
вместо одного сделать, я правильно понял?
0
nmcf
5356 / 4676 / 1566
Регистрация: 14.04.2014
Сообщений: 18,643
16.11.2014, 14:01 #6
Ну потому что я так алгоритм составил. Можно доработать, чтобы и пробелы допускались. Суть в том, что число извлекается до запятой, get() пропускает запятую, а если будет пробел, то запятая останется. Запятая должна быть слитно с предыдущим числом.

Добавлено через 1 минуту
Нет, если пробелы разрешить, то нет гарантии, что их не будет два, три или десять. Нужно тогда циклом читать.
0
Redivn
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 6
16.11.2014, 14:05  [ТС] #7
ну это не проблема, количество пробелов всегда одно и тоже и равно одному, ну или действительно циклом)
Большое спасибо, я разобрался!
0
16.11.2014, 14:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2014, 14:05
Привет! Вот еще темы с ответами:

чтение из файла - C++
файл текст... чтение... ... char font_name = {0}; int font_size = 0;

Чтение из файла - C++
Добрый день, нужна помощь! Нужно прочитать данные из файла. Как я понимаю они записаны структурой, ну или хотя бы в структуру их будет...

Чтение из файла - C++
Здравствуйте, мне нужно вывести данные из текстового файла в Edit Control, для этого я использую данный алгоритм: CString...

Чтение из файла - C++
Есть текстовый файл, с n строк. Нужно записать содержимое каждой строки в массив char table. Длина каждой строки известна и одинакова, так...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru