Giriş
Şu satırı dahil ederiz.
wformat sınıfı şöyle tanımlıdır.
Elimizde şöyle değişkenler olsun.
operator %
Kendi sınıfımızı boost::format ile kullanmak için şöyle yaparız.
free style str metodu şöyle kullanılır
Format string içinde kullanılan formatlama seçenekleri platformadan bağımsızdır.
1. double için
Yuvarlama gerekiyorsa çift rakama doğru yuvarlamak yapılır ("round half to even")
Örnek
Şöyle yaparız. Çıktı olarak 102262 alırız
Şöyle yaparız.
Şöyle yaparız.
64 bit integer için kullanılır. Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/format.hpp>
format kütüphanesi kendi içinde bir ostream kullanır. Formatlama için kullanılan indeksler %1%'den başlar.typedef basic_format<wchar_t > wformat;Constructor
Elimizde şöyle değişkenler olsun.
unsigned short vendorID =...;
unsigned short productID = ...;
Bu değişkenleri formatlamak için şöyle yaparız.boost::format fmt("[Vendor= %1%] [Product= %2%]") % vendorID %productID;
Eğer format string'i hatalıysa boost::bad_format_string atılır.operator %
Kendi sınıfımızı boost::format ile kullanmak için şöyle yaparız.
#include <boost/format.hpp>
#include <iostream>
struct A
{
int n;
A() : n() {}
friend std::ostream &operator<<(std::ostream &oss, const A &a) {
oss << "[A]: " << a.n;
}
};
int main() {
A a;
boost::format f("%1%");
std::cout << f % a << std::endl;
}
str metodufree style str metodu şöyle kullanılır
boost::str(fmt);
Formatlama SeçenekleriFormat string içinde kullanılan formatlama seçenekleri platformadan bağımsızdır.
1. double için
Yuvarlama gerekiyorsa çift rakama doğru yuvarlamak yapılır ("round half to even")
Örnek
Şöyle yaparız. Çıktı olarak 102262 alırız
double nbr = 102262.5;
boost::format("%.0f") % nbr;
Şöyle yaparız. Çıktı olarak 34088 alırızdouble nbr = 34087.5;
boost::format("%.0f") % nbr;
Elimizde şöyle bir kod olsundouble d = 0.0009;
Şöyle yaparız. Çıktı olarak 0.0009 alırızstd::string s = (boost::format("%1$.4f") % d).str();
2. float içinŞöyle yaparız.
format f ("%1$.2f");
Şöyle yaparızboost::str(boost::format("%0.3f") % 5.453)Şöyle yaparız. %4.3e gibi bir girdi alır.
#include <boost/format.hpp>
std::string FloatToScientificString(float val, int width, int precision)
{
const std::string fmt = "%" + std::to_string(width) + "." +
std::to_string(precision) + "e";
return boost::str(boost::format(fmt) % val);
}
3. integer içinŞöyle yaparız.
boost::format header("%+3d") % i; // Add "+" when is not negative
4. llx seçeneği64 bit integer için kullanılır. Şöyle yaparız.
boost::format("0x%016llx") % (unsigned long long)(u64)).str();
Hiç yorum yok:
Yorum Gönder