Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 19
1

Чтение из файла в QString

21.01.2016, 13:51. Показов 6674. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне надо прочитать строчку из файла и записать ее в переменную типа Qstring. Никак не получается, что я не так делаю?
C++ (Qt)
1
2
3
4
5
6
7
8
9
    QFile file("dat.conf");
    file.open(QIODevice::ReadOnly);
    char dbase[1024];
    char host[1024];
 
    file.readLine(host,sizeof(host));
    file.readLine(dbase,sizeof(dbase));
    QString dbase_str=QString(dbase);
    file.close();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2016, 13:51
Ответы с готовыми решениями:

занесение QString и Чтение из QStringList
нужно как то в классе реализоват следующее :: должны быть 2 слота которые связаны QPushButton...

Qt Запись и чтение QString в бинарный файл
Здравствуйте, столкнулся с проблемой записи строки символов в бинарный файл, помню с C++, при...

QFile::rename(QString name1, QString name2) не работает под Win
Добрый день! Столкнулся с проблемой: QFile::rename(QString name1, QString name2) не работает под...

Как разбить QString строку на подстроки, т.е. на qlist <qstring> ?
Как разбить QString строку: &quot;/michaeltosell&quot;, &quot;/vorago&quot;, &quot;/yanochka147&quot;, &quot;gertylohhg&quot;, на...

14
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.01.2016, 14:19 2
Лучший ответ Сообщение было отмечено rosa_t как решение

Решение

Цитата Сообщение от rosa_t Посмотреть сообщение
Никак не получается, что я не так делаю?
Зачем-то вставили 5ое колесо в виде массивов char. Смотрите документацию по QFile.
C++ (Qt)
1
2
3
4
5
    QFile file("dat.conf");
    if (!file.open(QIODevice::ReadOnly)) 
        return;
    QString dbase_str = file.readLine();
    file.close();
Добавлено через 5 минут
Либо же проверяйте где у вас что-то не делается. Q_ASSERT - только для отладки, удалите их сразу же после.
C++ (Qt)
1
2
3
4
5
6
7
8
9
QFile file("dat.conf");
    Q_ASSERT(file.open(QIODevice::ReadOnly));
    char dbase[1024];
    char host[1024];
 
    Q_ASSERT(file.readLine(host,sizeof(host)) > 0);
    Q_ASSERT(file.readLine(dbase,sizeof(dbase)) > 0);
    QString dbase_str=QString(dbase);
    file.close();
1
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 19
21.01.2016, 14:27  [ТС] 3
Да, спасибо , разобралась - не был указан полный путь к файлу. Теперь встала другая проблема: не подключается база со считанными из файла параметрами (если указать просто строки с значениями - подключается).

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
QFile file(path+"/dat.conf");
    file.open(QIODevice::ReadOnly);
    QString host= file.readLine();
    QString dbase =file.readLine();
    file.close();
      db.setUserName("postgres");
    db.setPassword("11111111");
    db.setDatabaseName(dbase);//"proba"
    db.setHostName(host);//"localhost"
    db.setPort(5432);
    if (db.open()){}
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.01.2016, 14:47 4
C++ (Qt)
1
2
3
#inclide <QDebug>
qDebug() << dbase;
qDebug() << host;
Что выводят?
0
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
21.01.2016, 15:19 5
В pro-файле прописано QT += sql ?
Где в коде сам объект базы? Не вижу, где он создается.
Драйвер подключен вообще? Что в листе будет после прохождения строчки
C++ (Qt)
1
QStringList drivers = QSqlDatabase::drivers();
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.01.2016, 15:30 6
Цитата Сообщение от Горбаг Посмотреть сообщение
В pro-файле прописано QT += sql ?
Где в коде сам объект базы? Не вижу, где он создается.
Драйвер подключен вообще? Что в листе будет после прохождения строчки
Для кого написано:
Цитата Сообщение от rosa_t Посмотреть сообщение
если указать просто строки с значениями - подключается
?
0
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 19
21.01.2016, 16:08  [ТС] 7
dbase и host выдают нужные строки(я их выводила через QMessageBox). sql в файле проекта подключено,db объявлен в заголовочном файле. База подключается если указать строки со значениями напрямую, а не считывать их из файла
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.01.2016, 16:19 8
Цитата Сообщение от rosa_t Посмотреть сообщение
dbase и host выдают нужные строки(я их выводила через QMessageBox). sql в файле проекта подключено,db объявлен в заголовочном файле. База подключается если указать строки со значениями напрямую, а не считывать их из файла
Добавьте перед передачей данных параметров в базу эти строки
C++ (Qt)
1
2
Q_ASSERT(dbase == "proba");
Q_ASSERT(host == "localhost");
И посмотрите, не вылетит ли на них программа.

Добавлено через 19 секунд
Программу, разумеется, надо собирать в режиме debug
0
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 19
21.01.2016, 16:30  [ТС] 9
Программа вылетает на Q_ASSERT. Зотя до этого вывожу в QMessageBox значение - отображает proba и localhost.
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.01.2016, 19:49 10
Цитата Сообщение от rosa_t Посмотреть сообщение
Программа вылетает на Q_ASSERT. Зотя до этого вывожу в QMessageBox значение - отображает proba и localhost.
На каком именно Q_ASSERT она вылетает?
C++ (Qt)
1
2
3
4
qDebug() << "|" + dbase + "|" << dbase.length();
Q_ASSERT(dbase == "proba");
qDebug() << "|" + host + "|" << host.length();
Q_ASSERT(host == "localhost");
Что выдаёт программа в таком случае? У вас в какой-то строке данные не верные. Возможно там содержится какой-то посторонний символ или просто пробел.
0
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 19
21.01.2016, 20:07  [ТС] 11
вылетает на Q_ASSERT(host == "localhost"); Первый Q_ASSERT с dbase проходит нормально.
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.01.2016, 20:09 12
Цитата Сообщение от rosa_t Посмотреть сообщение
вылетает на Q_ASSERT(host == "localhost"); Первый Q_ASSERT с dbase проходит нормально. конца строки
Что выдал qDebug по коду выше?
0
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 19
21.01.2016, 20:28  [ТС] 13
Поняла -переменная host содержит символ возврата каретки (перехода на новую строку). Как его убрать?

Добавлено через 15 минут
"|localhost
|" 11
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.01.2016, 20:29 14
Цитата Сообщение от rosa_t Посмотреть сообщение
Поняла -переменная host содержит символ возврата каретки (перехода на новую строку). Как его убрать?
Есть замечательная функция QString::simplified(). Есть замечательная функция QString::trimmed(). Используйте ту, что лучше вам подходит.
1
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 19
21.01.2016, 20:43  [ТС] 15
Спасибо, все получилось!
0
21.01.2016, 20:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2016, 20:43
Помогаю со студенческими работами здесь

QList <QPair <QString, QString> > - сортировка пузырьком
Возможно ли? =) Есть список городов с их идентификационным номером, например:...

Cтрока: Как сконвертировать QString в const QString?
Доброго времени суток. Как сконвертировать QString в const QString

Поиск в QMap<QString, QString> по регекспу
Есть QMap&lt;QString, QString&gt;. Есть некоторое регулярное выражение, по которому требуется найти все...

Открытие файла в Qt. ошибка CANNOT CONVERT QString to FILE
пишу код для передачи файла по сокету. для начала открываю его следующей командой: QString...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru