设为首页 加入收藏

TOP

4.11.1 BOOST_STRINGIZE
2013-10-07 15:02:14 来源: 作者: 【 】 浏览:78
Tags:4.11.1 BOOST_STRINGIZE

4.11.1  BOOST_STRINGIZE

宏BOOST_STRINGIZE可以将任意字面量转换为字符串。为了使用BOOST_STRINGIZE宏,需要包含头文件<boost/config/suffix.hpp>,即:

  1. #include <boost/config/suffix.hpp> 

BOOST_STRINGIZE是一个宏,这一点很重要,意味着它仅能用于编译期(准确地说是编译前预处理时),不支持运行时转换。如果要在运行时转换数字或者其他变量到字符串,请使用5.1节的lexical_cast(第163页)。

示范BOOST_STRINGIZE用法的代码如下所示,其中的__LINE__是C标准中定义的内置宏,表示程序的行号,是一个long型整数:

  1. cout << BOOST_STRINGIZE(__LINE__) << endl;  
  2. cout << std::boolalpha << (string("22") == BOOST_STRINGIZE(__LINE__)) << endl;  
  3. int x = 255;  
  4. cout << BOOST_STRINGIZE(x) << endl;  

程序的运行结果如下:
  1. 21  
  2. true  
  3. x  

代码的前两条语句运用了BOOST_STRINGIZE,把编译期的整数转换成了字符串,而第三个BOOST_STRINGIZE因无法处理运行时的整数变量,只能把它转换成字面意义的字符串。

BOOST_STRINGIZE最常见的用途是在泛型编程(www.cppentry.com)中将编译期常数转换成字符串,在调试或者输出日志时相当方便,如boost.exception中就用到了BOOST_STRINGIZE。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.11.2 BOOST_STATIC_CONSTANT 下一篇4.10.6 SHA1摘要算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: