Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, 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
и как применить всё это