#include <iterator>
#include <iostream>
#include <vector>
#include <fstream>
struct Vector3
{
float x, y, z;
};
struct joint_angle
{
int count;
Vector3 orient;
};
struct pose
{
float time;
std::vector<joint_angle> angle;
};
std::vector<pose> posture;
// opérateur pour lire un "joint_angle"
std::istream & operator>> (std::istream & stream, joint_angle & ja)
{
ja.count = 0;
stream >> ja.orient.x >> ja.orient.y >> ja.orient.z;
return stream;
}
// opérateur pour lire un "pose"
std::istream & operator>> (std::istream & stream, pose & p)
{
p.time = 0;
std::copy(std::istream_iterator<joint_angle>(stream), std::istream_iterator<joint_angle>(), std::back_inserter(p.angle));
return stream;
}
// pour lire un fichier
int main()
{
std::ifstream stream("fichier.txt" );
if (stream)
{
// test operator >> joint_angle
joint_angle ja;
stream >> ja;
// test operator >> pose
pose p;
stream >> p;
}
}
CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZnN0cmVhbT4KCnN0cnVjdCBWZWN0b3IzIAp7CiAgICBmbG9hdCB4LCB5LCB6Owp9OwoKc3RydWN0ICBqb2ludF9hbmdsZQp7CiAgICBpbnQgY291bnQ7CiAgICBWZWN0b3IzIG9yaWVudDsKfTsKIApzdHJ1Y3QgcG9zZQp7CiAgICBmbG9hdCB0aW1lOwogICAgc3RkOjp2ZWN0b3I8am9pbnRfYW5nbGU+IGFuZ2xlOwp9OwogCnN0ZDo6dmVjdG9yPHBvc2U+IHBvc3R1cmU7CgovLyBvcMOpcmF0ZXVyIHBvdXIgbGlyZSB1biAiam9pbnRfYW5nbGUiCnN0ZDo6aXN0cmVhbSAmIG9wZXJhdG9yPj4gKHN0ZDo6aXN0cmVhbSAmIHN0cmVhbSwgam9pbnRfYW5nbGUgJiBqYSkgCnsKICAgIGphLmNvdW50ID0gMDsKICAgIHN0cmVhbSA+PiBqYS5vcmllbnQueCA+PiBqYS5vcmllbnQueSA+PiBqYS5vcmllbnQuejsKICAgIHJldHVybiBzdHJlYW07Cn0KIAovLyBvcMOpcmF0ZXVyIHBvdXIgbGlyZSB1biAicG9zZSIKc3RkOjppc3RyZWFtICYgb3BlcmF0b3I+PiAoc3RkOjppc3RyZWFtICYgc3RyZWFtLCBwb3NlICYgcCkgCnsKICAgIHAudGltZSA9IDA7CiAgICBzdGQ6OmNvcHkoc3RkOjppc3RyZWFtX2l0ZXJhdG9yPGpvaW50X2FuZ2xlPihzdHJlYW0pLCBzdGQ6OmlzdHJlYW1faXRlcmF0b3I8am9pbnRfYW5nbGU+KCksIHN0ZDo6YmFja19pbnNlcnRlcihwLmFuZ2xlKSk7CiAgICByZXR1cm4gc3RyZWFtOwp9CiAKLy8gcG91ciBsaXJlIHVuIGZpY2hpZXIKaW50IG1haW4oKQp7CiAgICBzdGQ6Omlmc3RyZWFtIHN0cmVhbSgiZmljaGllci50eHQiICk7CiAgICBpZiAoc3RyZWFtKQogICAgewogICAgICAgIC8vIHRlc3Qgb3BlcmF0b3IgPj4gam9pbnRfYW5nbGUKICAgICAgICBqb2ludF9hbmdsZSBqYTsKICAgICAgICBzdHJlYW0gPj4gamE7CiAgICAKICAgICAgICAvLyB0ZXN0IG9wZXJhdG9yID4+IHBvc2UKICAgICAgICBwb3NlIHA7CiAgICAgICAgc3RyZWFtID4+IHA7CiAgICB9Cn0K