Re[4]: Проблемы со считыванием структуры из файла
От: falcon8 Россия  
Дата: 18.01.08 10:15
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, falcon8, Вы писали:


F>>если было хоть какое-нибудь разделение вопроса не было б есть только размер и набор символьных строк

К>Строк в "общечеловеческом" понимании, но не в сишном.

К>Тебе что, сложно превратить массив символов в строку? Ай, как нефиг делать!

К>
К>// 1234556909809.01.444443356784532
К>// \___________/ \/ \_____________/
К>//       a       b         c
К>#pragma pack(push,1)
К>struct FileRecord // только для чтения-записи в файл
К>{
К>    char a[13], dummy1, b[2], dummy2, c[15];
К>};
К>#pragma pack(pop)

К>// немножко по мотивам буста
К>template<class T, int N> T* begin(T(&arr)[N]) { return arr+0; }
К>template<class T, int N> T* end  (T(&arr)[N]) { return arr+N; }

К>template<class I, class J, class T> void copy_and_fill(I i, I ie, J j, J je, T v)
К>{
К>    for( ; i!=ie && j!=je; ++i, ++j)
К>        *je = *ie;
К>    for( ; j!=je; ++j)
К>        *j = v;
К>}

К>struct Record // для работы
К>{
К>    std::string a, b, c;
    
К>    Record(const FileRecord& src)
К>        : a(begin(src.a), end(src.a))
К>        , b(begin(src.b), end(src.b))
К>        , c(begin(src.c), end(src.c))
К>    {}
    
К>    void export(FileRecord& dst) const
К>    {
К>        copy_and_fill(a.begin(), a.end(), begin(dst.a), end(dst.a), ' ');
К>        dst.dummy1 = '.';
К>        copy_and_fill(b.begin(), b.end(), begin(dst.b), end(dst.b), ' ');
К>        dst.dummy2 = '.';
К>        copy_and_fill(c.begin(), c.end(), begin(dst.c), end(dst.c), ' ');
К>    }
К>};
К>inline std::ostream& operator << (std::ostream& ost, Record const& rec)
К>{
К>    ost << "{ ";
К>    ost << "\"" << rec.a << "\"" << ", ";
К>    ost << "\"" << rec.b << "\"" << ", ";
К>    ost << "\"" << rec.c << "\"";
К>    ost << " }";
К>    return ost;
К>}
К>


красиво а по быстродействию быстрее чем strncpy
и как применить всё это
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.