Название: чем из QT заменить getline с сепаратором? Отправлено: gal555 от Апрель 26, 2018, 09:05 Подскажите в Qt чем можно заменить (Qtшными библиотеками):
Код: std::ifstream file(strFile.toStdString()); // файл из которого читаем в папке проекта Нужен какой либо Qt стрим с сепаратором Название: Re: чем из QT заменить getline с сепаратором? Отправлено: qate от Апрель 26, 2018, 15:29 Наверно задача не частая, поэтому можно накостылять типа https://stackoverflow.com/questions/27838186/qtextstream-read-a-string-until-tab
Неужели файл очень большой, что не считать его целиком ? Название: Re: чем из QT заменить getline с сепаратором? Отправлено: gal555 от Апрель 26, 2018, 16:15 Спасибо. В принципе годится "костыль", задача раз в неделю json файл разобрать в несколько метров. redall не берёт. главное - чтоб работало . Я думал может пропустил метод какой стримовский, вот и спросил.
Название: Re: чем из QT заменить getline с сепаратором? Отправлено: Авварон от Апрель 26, 2018, 17:17 чем QFile::readLine не угодил?
Название: Re: чем из QT заменить getline с сепаратором? Отправлено: Old от Апрель 26, 2018, 18:25 Еще более непонятно, зачем для разбора json читать файл построчно? И это если забыть про QJsonDocument. :)
Название: Re: чем из QT заменить getline с сепаратором? Отправлено: Авварон от Апрель 26, 2018, 18:56 Говорят, файл большой. Но я бы попробовал сделать QFile::mmap->QByteArray::frmRawData->QJsonDocument::fromJson сперва
Название: Re: чем из QT заменить getline с сепаратором? Отправлено: gal555 от Апрель 26, 2018, 22:14 Не надо сразу гнобить. Новичек, вот и прошу научить.
1) QJsonDocument как не пробовал -не смог создать. на этом шаге комп вис. Файл присылают текстовый несколько метров (от посторонних, переделать их заставить нельзя). Делал маленький файл - всё работало. 2) QFile::readLine - если можно задать сепаратор - как раз это я и спрашиваю. Сам не нашёл как. Пробелов и окончаний строк - нет, всё одной строкой Название: Re: чем из QT заменить getline с сепаратором? Отправлено: Авварон от Апрель 27, 2018, 01:14 1) Протестил на 13мегабайтном json'е, ~400ms, около половины времени - вывод в консоль. Файл сгенерил тут (https://www.json-generator.com) (поставил repeat 10k-15k), код тут (https://pastebin.com/R5dGftDx). Макось, core i7, ssd, релиз. 400ms это ниачом вообще. 180 мегабайт QJsonDocument уже не читает. Какой у вас размер файла?
2) А, я слепой, надо до запятой читать Название: Re: чем из QT заменить getline с сепаратором? Отправлено: Igors от Апрель 27, 2018, 09:51 А по-народному читать сырые данные напр чанками по 4K и перегонять в строку? Не, ну там же надо написать десяток строк (позорный велик!!!) Поэтому "будем изыскивать" :)
Название: Re: чем из QT заменить getline с сепаратором? Отправлено: gal555 от Апрель 27, 2018, 11:59 Спасибо всем. В итоге через QString QTextStream :: readLine без сепараторов считалось всё. Даже на куски не делил. Если в консоль не выводить, а с обработкой в базу данных отправлять - летает.
Код: QFile file (strFile); |