c 中的boost format使用方法

2021-10-10 06:45:21 字數 1900 閱讀 2733

這段時間一直在學習slam方面的東西,偶爾遇到boost,在這裡做個筆記以方便日後使用。

format主要是用來格式化std::string字串以及配合std::cout代替c語言printf()

使用format需要#include"boost/format.hpp"

boost::format的格式一般為:

boost::format( "format-string ") % arg1 % arg2 % ... % argn ;
注意這裡沒有示例物件,format-string代表需要格式化的字串,後面用過載過的%跟引數

std::cout《上面例子中%x%表示佔位符,%1%就是第乙個佔位符,%2%就是第二個,後面類推,再後面的%"***"就對應著每個佔位符,也就是說如果我們寫成:

std::cout《將會輸出

second

first

third

當然我們也可以分開寫,比如:

boost::format fmt("%2% \n %1% \n %3%" );

fmt %"first";

fmt %"second";

fmt %"third";

標題不好,湊合看吧。

我們還可以很方便的把格式化後的例項賦給std::string,如:

boost::format fmt("%1%")%"helloworld"; 

std::string st=fmt.str();

你可以這樣通過變數格式化,這與int a=5;printf("%d",a);是乙個道理,不同的是format是對字元的格式化而不包含輸出。

int a=5;

int b=6;

std::cout<< boost::format("%1% %2%" )%a%b;

格式化語法為: [ n$ ] [ flags ] [ width ] [ . precision ] type-char

有兩種版本:c語言和.net版本,我這裡就複製貼上了一段:

//傳統c語言風格

cout << boost::format("\n\n%s"

"%1t 十進位制 = [%d]\n"

"%1t 格式化的十進位制 = [%5d]\n"

"%1t 格式化十進位制,前補'0' = [%05d]\n"

"%1t 十六進製制 = [%x]\n"

"%1t 八進位制 = [%o]\n"

"%1t 浮點 = [%f]\n"

"%1t 格式化的浮點 = [%3.3f]\n"

"%1t 科學計數 = [%e]\n"

) % "example :\n" % 15 % 15 % 15 % 15 % 15 % 15.01 % 15.01 % 15.01 << endl;

//.net的風格

cout << boost::format("%1%"

"%1t 十進位制 = [%2$d]\n"

"%1t 格式化的十進位制 = [%2$5d]\n"

"%1t 格式化十進位制,前補'0' = [%2$05d]\n"

"%1t 十六進製制 = [%2$x]\n"

"%1t 八進位制 = [%2$o]\n"

"%1t 浮點 = [%3$f]\n"

"%1t 格式化的浮點 = [%3$3.3f]\n"

"%1t 科學計數 = [%3$e]\n"

) % "example :\n" % 15 % 15.01 << endl;

boost::format使用還是很不錯的,不過效率不盡人意,所以你需要在效率和使用方便兩個方面取捨

c 中Split函式的使方法

split函式 描述 返回乙個下標從零開始的一維陣列,它包含指定數目的子字串。語法 split expression delimiter count compare split函式語法有如下幾部分 部分描述 expression 必需的。包含子字串和分隔符的字串表示式 如果expression是乙個...

C 中string中的erase函式怎麼使用

erase函式的原型如下 1 string erase size t pos 0,size t n npos 2 iterator erase iterator position 3 iterator erase iterator first,iterator last 也就是說有三種用法 1 er...

C 中string中的erase函式怎麼使用

erase函式的原型如下 1 string erase size t pos 0,size t n npos 2 iterator erase iterator position 3 iterator erase iterator first,iterator last 也就是說有三種用法 1 er...