1. 基本概念
c++语言中传统的格式化函数是c语言的sprintf函数,缺点是不安全,在stl中引入了stringstream, 它虽然解决了安全性的问题,但是没有sprintf函数直观。boost::format是用来替代sprintf,格式化字符串的,既具有安全性,又具有直观性。
2. 所在头文件
#include
3. 简单示例
#include暑期编程PK赛 得CSDN机械键盘等精美礼品!#include #include #include using namespace std; using namespace boost::algorithm; char text[] = "hello"; char output[128]; void SprintfOutput(string text, bool is_lower_letter) //void SprintfOutput(char text[], bool is_lower_letter) 最佳的函数形式 { char* text_c = new char[text.size() + 1]; strcpy(text_c,text.c_str()); //注释处的代码会出现警告,这是因为此处sprintf()的第三个参数(text是字符串,而不是c的字符串) //因此,则需要将字符串转化成c的字符串 //sprintf(output, "<%s> %s in the lower case", text, // (is_lower_letter? "is": "is not")); sprintf(output, "<%s> %s in the lower case", text_c, (is_lower_letter? "is": "is not")); printf("%s n", output); } void CoutSteamOutput(string text, bool is_lower_letter) { cout << "<" << text << ">" << (is_lower_letter ? "is":"is not") << " in the lower case" << endl; } void BoostFormatOutput1(char text[], bool is_lower_letter) { //创建格式化字符串对象 boost::format fmt = boost::format("<%1%> %2% in ther lower case") % text % (is_lower_letter ? "is" : "is not"); //打印对象 cout << fmt << endl; } void BoostFormatOutput2(char text[], bool is_lower_letter) { //直接打印匿名对象的方法 cout << boost::format("<%1%> %2% in ther lower case") % text % (is_lower_letter ? "is" : "is not") << endl; } int main() { bool is_lower_letter = all(text,is_lower()); cout << "SprintfOutput" << endl; SprintfOutput(text,is_lower_letter); cout << "CoutSteamOutput" << endl; CoutSteamOutput(text, is_lower_letter); cout << "BoostFomartOutput1" << endl; BoostFormatOutput1(text, is_lower_letter); cout << "BoostFomartOutput2" << endl; BoostFormatOutput2(text, is_lower_letter); }



