14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
1

Функция чтения столбцов чисел из текстового файла

07.01.2014, 01:02. Показов 5797. Ответов 29
Метки нет (Все метки)

Необходима функция, которая откроет текстовый файл, прочтет заранее заданное количество столбцов в массив массивов.
В файле находятся не меньше одного столбца чисел записанных в одном из возможных форматов: 1234.213455 или -5.78786E-5.
До этого реализовывал на C#: читал в строки, затем регулярным выражением выбирал только то, что подходит, складывал в листы, затем перекладывал в массив массивов.
Сейчас изучаю С++ на реальных заданиях, прошу помощи.
Пишу в Qt.

Добавлено через 2 часа 49 минут
Чтение файла построчно с заполнением в массив, так правильно?

C++ (Qt)
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
#include <iostream>
#include <fstream>
 
int main()
{
    using std::cin;
    using std::cout;
 
    const int imax = 10;
    fstream inp_str();
    inp_str.open("C:/Exp.txt", ios::in);
 
    string arr [imax];
    int i;
 
    if(!inp_str)
    {
        cout << "Error!";
        return 0;
    }
 
    for(i = 0; i < imax; i++)
    {
        inp_str >> arr[i];
        cout << arr[i];
    }
 
    return 0;
}
Добавлено через 7 минут
Остается вопрос о том как спарсить из каждой строки первые N совпадений.
(регулярное выражение для чисел у меня есть)
А также как быть с тем, что количество строк заранее неизвестно?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2014, 01:02
Ответы с готовыми решениями:

Шаблонная функция для чтения целых чисел, дробных, строк из файла
Необходимо написать шаблонную функцию для чтения целых чисел, дробных, строк из файла. С числами...

Чтения текстового файла по кускам
Добрый всем день! Помогите пожалуйста, разобраться с чтением файла по кускам. Есть текстовый файл,...

Чтения массива из текстового файла
У меня есть тхт файл который получился из Опен Офиса(нет у меня не чего кроме него) сл вида: ...

Реализация чтения текстового файла в форме
Возникла такая проблема, мне нужно сделать программу для обучения и необходимо выложить...

29
Заблокирован
07.01.2014, 01:25 2
Glevera, а почему вы не используете возможности Qt для работы с файлами?

Добавлено через 1 минуту
Цитата Сообщение от Glevera Посмотреть сообщение
А также как быть с тем, что количество строк заранее неизвестно?
а что-то вроде такого не подойдет?
C++ (Qt)
1
2
3
4
5
6
7
8
9
QFile file("F:\\..."); 
if(file.open(QFile::ReadOnly)){ 
    QTextStream stream(&file); 
    while(!stream.atEnd()) 
    { 
    /*....*/
    }
}
file.close();
1
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 01:32  [ТС] 3
Ev_Hyper,
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Glevera, а почему вы не используете возможности Qt для работы с файлами?
Да потому что приходится одновременно учить, писать код и проектировать...)
Спасибо!
Буду знать, куда дальше двигаться.
Почитаю еще про Qt!
Как сделаю, отпишусь.
0
Ev_Hyper
07.01.2014, 01:37
  #4

Не по теме:

Я Qt плохо знаю, так что мог и не то посоветовать

0
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 01:41  [ТС] 5
Тогда такой вопрос, какими средствами чтения и парсинга файлов лучше пользоваться: Qt или С++?
0
2431 / 1831 / 404
Регистрация: 15.12.2013
Сообщений: 8,088
07.01.2014, 01:42 6
Что лучше знаете,тем и пользуйтесь.
0
Заблокирован
07.01.2014, 01:47 7
Glevera, тот код, что я выложил - рабочий, но не факт, что он вам подойдет. Мне почему то проще с файлами имеено в Qt. Тем более если вы раньше, считывали в С# построчно, то и тут можно поступить также.
0
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 01:51  [ТС] 8
S_el, ситуация такая: незнание С++ и Qt на одном уровне. Пишу в Qt Creator, так как приложение должно быть кроссплатформенным.

Не по теме:

Надеюсь, нигде не сглупил, и все делаю правильно... %-)



Добавлено через 2 минуты

Не по теме:

Ev_Hyper, впереди еще не одна тысяча строк, поэтому лучше знать наилучший вариант, чем просто рабочий код. :scratch:

0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.01.2014, 07:37 9
Цитата Сообщение от Glevera Посмотреть сообщение
Чтение файла построчно с заполнением в массив, так правильно?
Вот это не чтение строк:
C++
1
inp_str >> arr[i];
Это чтение слов (до пробельного символа). Зачем здесь string, если в файле числа?
1
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 12:17  [ТС] 10
Цитата Сообщение от alsav22 Посмотреть сообщение
Зачем здесь string, если в файле числа?
Это шаг к тому, чтобы потом перейти к числам.
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.01.2014, 12:43 11
Цитата Сообщение от Glevera Посмотреть сообщение
Это шаг к тому, чтобы потом перейти к числам.
Почему не сразу читать числа? Или так задачу не решить?
0
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 12:56  [ТС] 12
Я вот не соображу, чтобы код было стопроцентно кроссплатформенным при использовании Qt, нужно не использовать заголовочные файлы типа iostream и math.h?
Это нужно знать, чтобы мне сейчас читать и учиться использовать для чтения и парсинга Qt или нет.

Не по теме:

alsav22, Рождество, а Вы как-то недобро...
Потому что еще не знаю как. Если бы знал, поверьте, сюда бы не обращался. :)

0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.01.2014, 13:03 13

Не по теме:

Цитата Сообщение от Glevera Посмотреть сообщение
Рождество, а Вы как-то недобро...
Не понял, в чём недобро?



Добавлено через 1 минуту
Цитата Сообщение от Glevera Посмотреть сообщение
Потому что еще не знаю как.
Не знаете что? Как числа прочитать или как задачу решить?

Добавлено через 1 минуту
Цитата Сообщение от Glevera Посмотреть сообщение
Я вот не соображу, чтобы код было стопроцентно кроссплатформенным при использовании Qt, нужно не использовать заголовочные файлы типа iostream и math.h?
Это стандартные хедеры, поэтому можно (только лучше cmath).
1
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 13:18  [ТС] 14
alsav22,
Фуф.
Непонятно, как читать поток построчно?
А fstream можно использовать?

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Не понял, в чём недобро?
Извиняюсь, значит показалось.)

0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.01.2014, 13:22 15
Цитата Сообщение от Glevera Посмотреть сообщение
А fstream можно использовать?
Можно, если нужно.

Добавлено через 2 минуты
Цитата Сообщение от Glevera Посмотреть сообщение
Непонятно, как читать поток построчно?
Знак вопроса кому? Не ответили насчёт чтения сразу чисел. Или вас это не интересует? Вопрос темы, собственно, в чём? Как прочитать строку из файла, или что?

Добавлено через 59 секунд
Цитата Сообщение от Glevera Посмотреть сообщение
которая откроет текстовый файл, прочтет заранее заданное количество столбцов в массив массивов.
Что за массив массивов?
1
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 13:37  [ТС] 16
alsav22,
По поводу чисел. Числа в разных форматах, поэтому хочу использовать регулярное выражение для каждой строки и брать оттуда первые N (заданное количество столбцов) вхождений.

"Массив массивов" - опечатка, конечно же двумерный массив.
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.01.2014, 13:43 17
Цитата Сообщение от Glevera Посмотреть сообщение
Числа в разных форматах
Для форматируемого чтения (>>) без разницы, лишь бы формат был правильный для чисел.
1
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 13:48  [ТС] 18
alsav22, Вы имеете в виду, что перечисленные ниже числа в строке прочтутся как числа без проблем, и не нужны никакие регулярные выражения?
2345092 -345985 0.32453997 -3345.34562 -5.78786E-5
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.01.2014, 13:48 19
Может скажете в чём цель? Чтобы понятно было, что нужно сделать.
Цитата Сообщение от Glevera Посмотреть сообщение
конечно же двумерный массив.
Двумерный массив чего?

Добавлено через 29 секунд
Цитата Сообщение от Glevera Посмотреть сообщение
alsav22, Вы имеете в виду, что перечисленные ниже числа в строке прочтутся как числа без проблем, и не нужны никакие регулярные выражения?
2345092 -345985 0.32453997 -3345.34562 -5.78786E-5
Конечно. Это нормальный формат записи чисел.
1
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 13:55  [ТС] 20
alsav22, double вероятно.

Добавлено через 5 минут
А есть что-то более точное и удобное в вычислениях кроме double?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2014, 13:55
Помогаю со студенческими работами здесь

как с программировать кнопку чтения текстового файла
На рисунки только каркас программы, можите написать код под кнопку открытие, чтоб нажимая ее в поле...

Программа для чтения из текстового файла в бинарный.
Доброго времени суток! Пытаюсь разобраться в коде. Программа для чтения из текстового файла в...

Как отловить событие чтения текстового файла
Приветствую всех, друзья! Возник такой вопрос: Вот у меня есть некий текстовый файл....

Открытие текстового файла для чтения с общим доступом
Всем здравствуйте. Есть текстовый файл cо строками одинакового формата. Используется он для...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru