Russian Qt Forum
Ноябрь 25, 2024, 01:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Чтение файла с сохранением строк.  (Прочитано 3069 раз)
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 чтобы потом сохранить построчно в файл.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Февраль 20, 2016, 01:01 »

А строки чем разделены?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
folax
Гость
« Ответ #2 : Февраль 20, 2016, 10:41 »

строки разделены CR (возврат каретки) и LF (подача строки) символами
Записан
Smogg
Гость
« Ответ #3 : Февраль 24, 2016, 22:53 »

А точно есть уверенность, что в этом файле никаких других символов, означающих конец строки нету?

Судя по виду, большие сомнения что это текст вообще.
Записан
folax
Гость
« Ответ #4 : Февраль 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());
    }

Всем спасибо за помощь.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 23.