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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Glevera
 Аватар для Glevera
13 / 13 / 1
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 01:02     Функция чтения столбцов чисел из текстового файла #1
Необходима функция, которая откроет текстовый файл, прочтет заранее заданное количество столбцов в массив массивов.
В файле находятся не меньше одного столбца чисел записанных в одном из возможных форматов: 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 совпадений.
(регулярное выражение для чисел у меня есть)
А также как быть с тем, что количество строк заранее неизвестно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1808 / 1629 / 435
Регистрация: 15.12.2013
Сообщений: 5,791
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();
Glevera
 Аватар для Glevera
13 / 13 / 1
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 01:32  [ТС]     Функция чтения столбцов чисел из текстового файла #3
Ev_Hyper,
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Glevera, а почему вы не используете возможности Qt для работы с файлами?
Да потому что приходится одновременно учить, писать код и проектировать...)
Спасибо!
Буду знать, куда дальше двигаться.
Почитаю еще про Qt!
Как сделаю, отпишусь.
Ev_Hyper
07.01.2014, 01:37
  #4

Не по теме:

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

Glevera
 Аватар для Glevera
13 / 13 / 1
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 01:41  [ТС]     Функция чтения столбцов чисел из текстового файла #5
Тогда такой вопрос, какими средствами чтения и парсинга файлов лучше пользоваться: Qt или С++?
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,921
07.01.2014, 01:42     Функция чтения столбцов чисел из текстового файла #6
Что лучше знаете,тем и пользуйтесь.
Ev_Hyper
 Аватар для Ev_Hyper
1808 / 1629 / 435
Регистрация: 15.12.2013
Сообщений: 5,791
07.01.2014, 01:47     Функция чтения столбцов чисел из текстового файла #7
Glevera, тот код, что я выложил - рабочий, но не факт, что он вам подойдет. Мне почему то проще с файлами имеено в Qt. Тем более если вы раньше, считывали в С# построчно, то и тут можно поступить также.
Glevera
 Аватар для Glevera
13 / 13 / 1
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 01:51  [ТС]     Функция чтения столбцов чисел из текстового файла #8
S_el, ситуация такая: незнание С++ и Qt на одном уровне. Пишу в Qt Creator, так как приложение должно быть кроссплатформенным.

Не по теме:

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



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

Не по теме:

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

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

Не по теме:

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

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.01.2014, 13:03     Функция чтения столбцов чисел из текстового файла #13

Не по теме:

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



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

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

Не по теме:

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

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.01.2014, 13:22     Функция чтения столбцов чисел из текстового файла #15
Цитата Сообщение от Glevera Посмотреть сообщение
А fstream можно использовать?
Можно, если нужно.

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

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

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

Добавлено через 29 секунд
Цитата Сообщение от Glevera Посмотреть сообщение
alsav22, Вы имеете в виду, что перечисленные ниже числа в строке прочтутся как числа без проблем, и не нужны никакие регулярные выражения?
2345092 -345985 0.32453997 -3345.34562 -5.78786E-5
Конечно. Это нормальный формат записи чисел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2014, 13:55     Функция чтения столбцов чисел из текстового файла
Еще ссылки по теме:

Функция чтения из файла C++
C++ Каким образом после чтения из файла, узнать позицию для чтения следующего куска байт
C++ Запись чисел из текстового файла

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

Или воспользуйтесь поиском по форуму:
Glevera
 Аватар для Glevera
13 / 13 / 1
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 13:55  [ТС]     Функция чтения столбцов чисел из текстового файла #20
alsav22, double вероятно.

Добавлено через 5 минут
А есть что-то более точное и удобное в вычислениях кроме double?
Yandex
Объявления
07.01.2014, 13:55     Функция чтения столбцов чисел из текстового файла
Ответ Создать тему
Опции темы

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