Название: Чтение данных из файла форматированного табуляторами Отправлено: vanessa от Января 28, 2010, 17:52 Я что-то зашел в тупик и не могу понять в чем проблема. Нужно прочитать данные из файла.
Пример данных Код: 'Мама'<tab>12 в результате хочу получить из этого файла в цикле строчку (текст, что в кавычках так как в реальных данных могут быть пробелы) и число. но паралельно напорлся еще на одну проблему, код Код: QFile f("reg.txt"); при компиляции выдает ошибки Код: regtest.cpp: In function ‘int main(int, char**)’: Вообщем я как-то зашел в тупик и прошу помощи. Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: Amigo_sa от Января 28, 2010, 18:01 Можно воспользоваться функцией QByteArray QFile::readAll()
Чтобы получить список значений, разделеных табуляцией, есть функция QStringList QString::split(... Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: BRE от Января 28, 2010, 18:02 Почитай на тему QDataStream, только он читает/пишет бинарные данные в своем формата.
Проще читать с помощью одного из методов QIODevice::readLine. Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: lit-uriy от Января 28, 2010, 20:50 Цитировать f.open()=" << f.open(QIODevice::ReadOnly); А что это за запись такая?Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: niXman от Января 28, 2010, 20:57 Цитировать А что это за запись такая? ага, я тоже не въехал)а вообще, дабы не городить велосипедов, могу порекомендовать boost.spirit Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: vanessa от Января 28, 2010, 22:06 Цитировать f.open()=" << f.open(QIODevice::ReadOnly); А что это за запись такая?Код: qDebug() <<" А как-то QRegExp запрячь для этой работы можно? ведь с помощью регулярного выражения '([^'])'+(\d+) легко можно разобрать подобное на части. для скобок () написано что ищет и сохраняет в памяти группу символов, как потом к этой группе добраться ? в perl такой фокус легко получается. Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: BRE от Января 28, 2010, 22:48 Amigo_sa уже написал выше... Для этого случая регулярные выражения избыточны, хватит и QString::split.
Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: vanessa от Января 28, 2010, 22:51 Ок, спасибо, буду разбиратся.
А вот еще вопрос, у меня текст в файле в кодировке UTF-8, есть и кириллица, его как-то специально надо обрабатывать после readLine() ? Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: BRE от Января 28, 2010, 22:54 Ок, спасибо, буду разбиратся. Конечно, для получения корректных строк, нужно воспользоваться QTextCodec или по простому QString::fromUtf8.А вот еще вопрос, у меня текст в файле в кодировке UTF-8, есть и кириллица, его как-то специально надо обрабатывать после readLine() ? Использование QTextCodec более универсально, можно динамически настраивать кодеки для файлов в разной кодировке, второй жестко задает исходную кодировку. Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: vanessa от Января 28, 2010, 23:16 попробовал
QByteArray ba; s=QString::fromUtf8(f.realLine()) qDebug() << s; в результате кириллического текста не увидел или так и должно быть ? Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: BRE от Января 28, 2010, 23:19 А в консоли у тебя Utf8?
Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: vanessa от Января 28, 2010, 23:30 ага, когда делаю
% cat reg.txt то текст вижу правильно. и еще у меня точно UTF-8 Код: % locale ~ Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: BRE от Января 28, 2010, 23:35 Строка в QString храниться в UNICODE, поэтому на Utf8 нормально не отображается.
Что бы увидеть ее на консоли с Utf8 можно сделать обратное преобразование: qDebug() << s.toUtf8(); Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: vanessa от Января 28, 2010, 23:41 Строка в QString храниться в UNICODE, поэтому на Utf8 нормально не отображается. факир был пьян и фокус не удался. нет кириллицыЧто бы увидеть ее на консоли с Utf8 можно сделать обратное преобразование: qDebug() << s.toUtf8(); Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: BRE от Января 28, 2010, 23:44 ::)
А так? Код
Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: vanessa от Января 28, 2010, 23:48 Код: $./test Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: BRE от Января 28, 2010, 23:55 Странно.
Вот тестовая программка. Посмотри в исходнике, строка читается? Попробуй запустить, что выведет. Название: Re: Чтение данных из файла форматированного табуляторами Отправлено: vanessa от Января 29, 2010, 00:07 ну я тоже сделал такую-же программку. текст не читается. Я попробовал вывести тест из своего файла на QLabel и увидел кириллицу, так что проблема видимо в qDebug()
|