Опять вопрос по теме считывая файла, но по-сложнее!

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Опять вопрос по теме считывая файла, но по-сложнее!

Styopa » 20 май 2005, 21:40

Вопросы будут напишу ок?!
Мы все здесь для этого собрались, не так ли? :)

Dude » 13 апр 2005, 19:42

Спасибо большое, пробую! Вопросы будут напишу ок?!

WinMain » 08 апр 2005, 13:27

Лучше конечно разделять столбцы не табуляцией, а какими-то видимыми символами, типа точки с запятой (;), тогда меньше будет путаницы с разделителями, особенно если кто-то будет руками редактировать этот файл.
Если тебе заранее известен порядок записи данных в строке и их формат (числа целые, вещественные, строки...), то сначала определяется структура, поля которой будут соответствовать данным из строки текста...

Например, телефонный справочник:

7801798;ИВАНОВ В.П.;ул. КРАСНАЯ ПРЕСНЯ, д.14, кв.8
9126478;СИДОРОВ А.В.;ул. ПРОФСОЮЗНАЯ, д.36, кв.17
. . . . . .

Создаёшь для него структуру типа

Код: Выделить всё

typedef struct tagRECORD
{
   long Number;
   char Owner[80];
   char Address[128];
} RECORD;
Далее пишешь функцию, которая из строки получает данные и инициализирует ими поля структуры. Здесь может помочь класс потока istrstream:

Код: Выделить всё

#include <strstrea.h>

void StringToStruct(char *pszText, RECORD *lpRec)
{
   char Buff[128];
   istrstream is(pszText);
   is.getline(Buff, 15, ';');
   lpRec->Number = atol(Buff);
   is.getline(Buff, 80, ';');
   strcpy(lpRec->Owner, Buff);
   is.getline(Buff, 127);
   strcpy(lpRec->Address, Buff);
}
Ну а дальше уже организуешь построчное чтение текстового файла, вызываешь функцию StringToStruct(), передаёшь ей строку текста и указатель на структуру, которая будет принимать готовые данные...

Tima » 08 апр 2005, 11:34

Вообще то достаточно не удобный способ хранения инфы. Что по другому совсем никак?
Если никак - то придумывай свой парсер, типа
получитьСтроку()
распарситьСтроку()
первое значение если тип int в массив int
все последующие в массивы типа char
Проделать это в цикле

Опять вопрос по теме считывая файла, но по-сложнее!

Dude » 07 апр 2005, 23:29

вот есть в текстовом файле содержится таблица, столбцы разделены символами табуляции. Первый столбец содержит цифры, т.е. значения типа integer, остальные любые, например char.... В принципе вообще нужно считать и записать по массивам. Вопрос как записать нужные значения в нужные массивы???

Вернуться к началу