Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
 Аватар для Glevera
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148

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

07.01.2014, 01:02. Показов 7476. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2014, 01:02
Ответы с готовыми решениями:

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

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

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

29
Заблокирован
07.01.2014, 01:25
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
 Аватар для Glevera
14 / 14 / 2
Регистрация: 29.04.2012
Сообщений: 148
07.01.2014, 01:32  [ТС]
Ev_Hyper,
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Glevera, а почему вы не используете возможности Qt для работы с файлами?
Да потому что приходится одновременно учить, писать код и проектировать...)
Спасибо!
Буду знать, куда дальше двигаться.
Почитаю еще про Qt!
Как сделаю, отпишусь.
0
07.01.2014, 01:37

Не по теме:

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

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

Не по теме:

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



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

Не по теме:

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

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

Не по теме:

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

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

Не по теме:

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



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

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

Не по теме:

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

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

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

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

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

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

Добавлено через 5 минут
А есть что-то более точное и удобное в вычислениях кроме double?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.01.2014, 13:55
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru