2011-06-24 2 views
0

Je dois sortir mes données en notation scientifique avec une largeur fixe comme l'exemple ci-dessous. Y a-t-il un moyen de l'atteindre?Comment puis-je formater un nombre lors de l'émission avec yaml-cpp?

données:
- [+ 0.000000e + 00, + 0.100000e + 00, + 2.400000e + 00, + 3.600000e + 00, + 4.800000e + 00]
- [+ 1.200000e + 00, + 1.300000e + 00, + 2.400000e + 00, + 4.800000e + 00, + 6.000000e + 00]

-SW

Répondre

1

Faire une classe wrapper pour vos données:

struct Fixed { 
    Fixed(double v = 0): value(v) {} 
    double value; 

    std::string ToString() const { 
     /* write something that outputs this in the format you want */ 
    } 
}; 

et surcharge operator <<:

YAML::Emitter& operator << (YAML::Emitter& out, const Fixed& f) { 
    out << f.ToString(); 
    return out; 
} 

Alors ça va marcher comme on peut s'y attendre:

std::vector<Fixed> data = /* ... */; 
YAML::Emitter out; 
out << data; // etc 
+0

Merci pour la réponse rapide. Je vais essayer. –

Questions connexes