• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Потоковое Чтение В Строку

  • Автор темы eugira
  • Дата начала
E

eugira

Есть потоковое чтение из текстового файла в строковую переменную типа char[n].
Вопрос читаться будет ровно n символов или до 1-го пробела?
Более конкретно есть текстовый файл с 2 записями
RS728 INTEL Celeron G530 4096 500 9990
RS729 INTEL Celeron G540 4096 1000 11120
структура
Код:
struct TComp {
char Marka[15];
char Pr[20];
int Vop;//объем ОП
int Vgd;//объем ЖД
int Price; //цена
TComp *next;
};
и код, написанный правда в QT
Код:
bool ListComp::ReadFile(char * fln)
{//чтение из файла
QFile f(fln); TComp *w=new TComp;
if(!f.exists()) return false;
f.open(QIODevice::ReadOnly);
QTextStream in(&f);
while (!in.atEnd())
{
in>>w->Marka; in>>w->Pr; in>> w->Vop; in>> w->Vgd; in>> w->Price;
std::cout << w->Marka <<","<< w->Pr<<","<< w->Vop << '\n';
Add(w);
}
f.close();
return true;
}
Проверено, что вместо чтения из 1 строки файла w->Pr="INTEL Celeron G530" фактически читается
w->Pr="INTEL" Дальше идет смещение. Это всегда так при потоковом чтении? Как исправить?
 
V

virtpro

У тебя структура известного размера, можно её записать таким образом

C++:
fstream f("file.txt", ios::binary | ios::in | ios::out );

//Для записи
f.seekp( 0, ios::end );
f.write( (unsigned char * ) & TComp , sizeof TComp );

// для чтения
f.seekp(0,ios::beg);
f.read( (unsigned char *) & TComp, sizeof TComp );
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!