crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как в QDataStream указать разделитель при считывании файла?, (delimiter, token)
Rocky
  опции профиля:
сообщение 10.12.2010, 20:01
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Вот решил переписать код
bool CProjectSettingsDlg::Open(const QString& sFileName)
{
    std::string sFileNameStd = sFileName.toStdString();
    std::ifstream file(sFileNameStd.c_str());
    if (!file.is_open())
    {
        QMessageBox::critical(this, m_pMessage->GetMessage2(eHeader), m_pMessage->GetMessage2(eErrorOpenFile));
        return false;
    }
    
    char szBuf[512];
    file.getline(szBuf, 512, '|'); m_pProjectSettings->m_sRegionName = szBuf;
    file.getline(szBuf, 512, '|'); m_pProjectSettings->m_sSettlementName = szBuf;
...............

через QDataStream. И тут же столкнулся с проблемой, что непонятно, как задавать разделитель потоку? И можно ли это вообще сделать? Или нужно не этот класс брать? Т.е. я не знаю сколько байт мне считывать... я должен считать данные от "|", до "|". Как лучше всего это сделать?

Спасибо!

Сообщение отредактировал Rocky - 10.12.2010, 20:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 10.12.2010, 20:54
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Зачем тебе разделители? QDataStream обо всем позаботиться сам, просто записывай строки, а потом читай.
Или тебе нужно распарсить уже готовый файл с разделителями? Тогда, как я понял это текстовый файл и его проще читать с помощью QTextStream.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 10.12.2010, 21:04
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Можно использовать метод QString QTextStream::readLine ( qint64 maxlen = 0 ) + QString::split()

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 11.12.2010, 0:17
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


SABROG Понял, так и сделаю... Угу, уже есть готовые файлы и в них нужно считывать поля структур данных...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.9.2018, 21:13