Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выгрузить(считать) данные из таблицы csv в массивы, QT 
:(
    Опции темы
krounis
Дата 24.5.2017, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 13.5.2017

Репутация: нет
Всего: нет



Есть два массива:
Код

int arr1[20];
int arr2[20];


Данные из них записываются в табличный файл data.csv следующим образом:
Код

QFile File("data.csv");
QTextStream out(&File);
if(File.open(QIODevice::WriteOnly|QIODevice::Truncate))
{
out<<"arr1"<<';';
out<<"arr2"<<';'<<"\r\n";
for (int i=0; i<20; i++)
{
out.setRealNumberNotation(QTextStream::ScientificNotation);
out<<arr1[i]<<';';
out<<arr2[i]<<';'<<"\r\n";
}
File.close();
}


Как выглядит файл после записи данных можно увидеть в прикл.

Вопрос: как обратно выгрузить или считать данные из этого табличного файла обратно в массивы int arr1[20] и int arr2[20] например после перезапуска программы?


Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Снимок.JPG 26,41 Kb
PM MAIL   Вверх
borisbn
Дата 24.5.2017, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Код

QFile File("data.csv");
if(File.open(QIODevice::ReadOnly))
{
    QStringList lines = QString( File.readAll() ).split( QChar( '\n' ) );
    int i = 0;
    lines.remove( 0, 1 );
    for ( auto line : lines ) {
        QStringList numbers = line.split( QChar( ';' ) );
        arr1[ i ] = numbers[ 0 ].toInt();
        arr2[ i ] = numbers[ 1 ].toInt();
        i++;
    }
}

Добавь, только, проверки на количество строк и столбцов.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
krounis
Дата 24.5.2017, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 13.5.2017

Репутация: нет
Всего: нет



Цитата(borisbn @ 24.5.2017,  18:09)
Код

QFile File("data.csv");
if(File.open(QIODevice::ReadOnly))
{
    QStringList lines = QString( File.readAll() ).split( QChar( '\n' ) );
    int i = 0;
    lines.remove( 0, 1 );
    for ( auto line : lines ) {
        QStringList numbers = line.split( QChar( ';' ) );
        arr1[ i ] = numbers[ 0 ].toInt();
        arr2[ i ] = numbers[ 1 ].toInt();
        i++;
    }
}

Добавь, только, проверки на количество строк и столбцов.

а как?)) через условия? к каким переменным условия выставлять?

Добавлено через 5 минут и 29 секунд
Цитата(borisbn @ 24.5.2017,  18:09)
Код

QFile File("data.csv");
if(File.open(QIODevice::ReadOnly))
{
    QStringList lines = QString( File.readAll() ).split( QChar( '\n' ) );
    int i = 0;
    lines.remove( 0, 1 );
    for ( auto line : lines ) {
        QStringList numbers = line.split( QChar( ';' ) );
        arr1[ i ] = numbers[ 0 ].toInt();
        arr2[ i ] = numbers[ 1 ].toInt();
        i++;
    }
}

Добавь, только, проверки на количество строк и столбцов.

выводит ошибки:
user posted image
PM MAIL   Вверх
borisbn
Дата 25.5.2017, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



1. Замени
Код
lines.remove( 0, 1 );

на
Код
lines.removeFirst();


2. Добавь опцию компилятора
Цитата
-std=c++11


Добавлено через 2 минуты и 19 секунд
Цитата(krounis @  24.5.2017,  18:43 Найти цитируемый пост)
а как?)) через условия? к каким переменным условия выставлять?

Проверяй количество строк в lines и в numbers. Открой справку по QStringList.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1214 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.