Название: Чтение файла с сохранением строк.
Отправлено: folax от Февраль 20, 2016, 00:13
Добрый день. Столкнулся с такой проблемой не получается решить. У меня есть файл с таким содержимым: №1 [ PU20100214 oC %RH DP 20140512184434љ™±A ,BцRA20140512185434 °A33/B<ПA20140512190434љ™©Aff6B|ВA20140512191434НМ¤A33;B§, A2014051219243533ЈAљ™ABL:A20140512193435ffўA33?BН A20140512194435ffўAНМ<BАО A20140512195435НМ A >Bзa A20140512200435ffћAљ™CBЭA20140512201435ffљA33GBЩФA20140512202435НМAffLBьA2014051220343533—Aљ™QBьA20140512204435љ™•A VBЇуA20140512205435 ”AНМXBЋA2014051221043533“A XB]ґA20140512211436ff’Aљ™YBшA20140512212436ff’A33qBЌ'A20140512213436 ”AНМVBIЮA20140512214436 ”Aљ™WB%АA20140512215436љ™‘Aff\BтѓA2014051222043633ЏAffrBџ·"A2014051222143633ЏAНМ`B<јA20140512222436НМђA33qB6Љ$A20140512223436НМђAНМrBO &A20140512224436НМђAНМvBP *A20140512225436 ђAffvB'(A2014051223043733ЏA xBЌ2(A20140512231437ffЋAНМ|BdK+A20140512232437љ™ЌA xB-%A20140512233437НМЊAљ™yB5%A20140512234437ffЋAffzB )A2014051223543733ЏA ЂBЧ/A20140513000437НМђA33ЂBя?3A20140513001437ff’A33‚B(:A2014051300243733“Aff‚Boм;A20140513003437НМ”Aљ™‚BЛU?A20140513004438 ”Aff‚Bsq=A20140513005438ff’A33ѓB!г;A20140513010438љ™‘A …B(¬=A20140513011438ff’A „BТ\=A2014051301243833“AffѓBЗ=A2014051301343833“Aљ™ЂBЪЌ8A20140513014438 ”A33ЃB%3;A2014051301543833“A |Bпњ3A20140513020438ff’AffЃBЫ‰8A2014051302143833“A |Bпњ3A20140513022438ff’A33ЂB}H6A20140513023439ff’Aљ™{BN·1A20140513024439љ™‘Aљ™ЂB…5A20140513025439љ™‘AНМЂBQе5A20140513030439љ™‘AНМ|BЪY1A20140513031439 ђA ЂBB[1A2014051303243933ЏAНМ~Bµ.A20140513033439љ™ЌA ЃBџ®.A20140513034439љ™ЌA ‚BT‹0A20140513035439љ™ЌAНМЃB?,0A20140513040439љ™ЌA33‚BJк0A20140513041439љ™ЌAffЂB Џ-A20140513042440НМЊAљ™ЂB—j,A20140513043440 ЊAљ™Bтe)A20140513044440НМ€Aљ™B>U#A20140513045440 €A „B‚“)A20140513050440НМ€A33†BV/A20140513051440љ™‰Aљ™‡B,3A2014051305244033‹AНМ€BсK8A20140513053440 ЊAНМ€BAУ9A20140513054440љ™ЌAНМ€BЬб<A20140513055440ffЋAНМ‡B Ў<A2014051306044033ЏAff‡B°p=A20140513061441НМђA33‡BB"@A20140513062441љ™‘Aљ™‡BaBA2014051306344133“A33€B?‚FA20140513064441НМ”A33‰BкYKA20140513065441ff–A ‰B9 NA20140513070441НМA33‰B®юRA20140513071441ffљA ‰B•±UA20140513072441НМњA33‰BFЈZA20140513073441ffћA ‰BЕU]A20140513074441 Aљ™‰BЌxaA20140513075442љ™ЎAљ™ЉBPRfA20140513080442НМЁA33†BslA20140513081442НМЁAљ™ЃBkkcA20140513082442НМЁAљ™{B}\A20140513083442 ЁA xB‰WA20140513084442љ™ҐAљ™sBNA2014051308544233ЈA tBћъIA20140513090442 AНМvBY»FA20140513091442НМњA ~B'іGA20140513092442ffљAНМ~B мCA2014051309344233›A33ЂB«цFA20140513094443 њA ~Br/FA Здесь 7 строк. Мне нужно их считать в QStringList, для обработки данных его размер должен быть равен 7. Читаю таким способом: QStringList dataFromFile; QFile inputFile(filesPath.at(0)); if (inputFile.open(QIODevice::ReadOnly) | QIODevice::Text) { while(!inputFile.atEnd()) { dataFromFile << inputFile.readLine(); } } inputFile.close(); qDebug() << dataFromFile.size(); Вывод qDebuq = 2; Вопрос: почему читает только 2 строки ? В файле 7 строк !Для проверки я взял QByteArray и считал данные в него: QByteArray dataFromFile; QFile inputFile(filesPath.at(0)); if (inputFile.open(QIODevice::ReadOnly) | QIODevice::Text) { while(!inputFile.atEnd()) { dataFromFile += inputFile.readLine(); } } inputFile.close(); qDebug() << dataFromFile.size(); Результат 2456 символов как и положено. Можно было бы оставить так но мне нужно искать и менять текст поэтому нужно чтобы был QStringList чтобы потом сохранить построчно в файл.
Название: Re: Чтение файла с сохранением строк.
Отправлено: Racheengel от Февраль 20, 2016, 01:01
А строки чем разделены?
Название: Re: Чтение файла с сохранением строк.
Отправлено: folax от Февраль 20, 2016, 10:41
строки разделены CR (возврат каретки) и LF (подача строки) символами
Название: Re: Чтение файла с сохранением строк.
Отправлено: Smogg от Февраль 24, 2016, 22:53
А точно есть уверенность, что в этом файле никаких других символов, означающих конец строки нету?
Судя по виду, большие сомнения что это текст вообще.
Название: Re: Чтение файла с сохранением строк.
Отправлено: folax от Февраль 27, 2016, 14:36
В общем я всё считал в QVector состоящий из QByteArray, количество строк сохранилось, потом уже через костыль обработал данные: QVector<QByteArray> correctData; QFile correctFile(QApplication::applicationDirPath() + "/data.log"); if(!correctFile.open(QIODevice::ReadOnly)) { qDebug() << "Can't open file!"; return; } while(!correctFile.atEnd()) { correctData.push_back(correctFile.readLine()); }
Всем спасибо за помощь.
|