当我发现boost::lexical_cast
自己想到"为什么我不早点知道这件事!" - 我讨厌写代码
stringstream ss;
ss << anIntVal;
mystring = ss.str();
Run Code Online (Sandbox Code Playgroud)
现在我写
mystring = boost::lexical_cast<string>(anIntVal);
Run Code Online (Sandbox Code Playgroud)
昨天,在stackoverflow上,我遇到了boost split(另一个将节省我编写代码的宝石).
string stringtobesplit = "AA/BB-CC")
vector<string> tokens;
boost::split(tokens, stringtobesplit, boost::is_any_of("/-"));
// tokens now holds 3 items: AA BB CC
Run Code Online (Sandbox Code Playgroud)
我要开始寻找通过Boost文档寻找其他的功能,我就可以经常使用,但我觉得,这将是很容易错过的事情.
您最常使用哪些增强功能/不想拥有?
fhe*_*fhe 62
可能对我来说最常用的提升部分是boost :: shared_ptr.
Pau*_*gar 49
BOOST_FOREACH让生活变得有价值.
(为什么没有人提到这个?8个月前问了这个问题!)
Rob*_*Rob 34
我的喜欢没有特别的顺序:
当我编写我的第一个跨平台应用程序时,Boost是一个巨大的帮助 - 没有它我真的会挣扎.
ham*_*mcn 28
我喜欢你如何提供自己的析构函数shared_ptr
.
这意味着,例如,您可以使用它FILE*
并让它为您关闭文件.
例如
void safeclose(FILE*fp) {
if(fp) {
fclose(fp);
}
}
void some_fn() {
boost::shared_ptr<FILE> fp( fopen(myfilename, "a+t"), safeclose );
//body of the function, and when ever it exits the file gets closed
fprintf( fp.get(), "a message\n" );
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*son 11
更新(2011年10月):C++ 11(C++ 0x)有static_assert
http://www2.research.att.com/~bs/C++0xFAQ.html#static_assert
我最常用的一个不是Boost,而是建立在Boost之上的Adobe Source Libraries(ASL) - 特别是接受boost :: range的标准算法的扩展,而不是单独的begin/end迭代器.然后,而不是打电话,比方说,
std::for_each(some_container.begin(), some_container.end(), do_something());
Run Code Online (Sandbox Code Playgroud)
我可以简单地说
adobe::for_each(some_container, do_something());
Run Code Online (Sandbox Code Playgroud)
(我希望ASL的这些部分最终能够迁移到Boost.)
我经常使用:
如果你正在编写一个应该在各种平台上使用的库,那么其他像Tuple,Static Assert和Integer非常有用.
像Graphs和Lambda这样的东西更具体.
boost::shared_ptr
是现代C++编程恕我直言的要求.这就是他们将其添加到TR1标准的原因.boost::program_options
,boost::bind
和boost::signal
是非常好的,如果你知道它们是什么,以及如何使用它们.最后两个往往会吓到新人.
我多年来一直在使用shared_ptr.它非常有用,没有理由说项目应该没有它.
最重要的是,我还使用Bind/Function/Lambda作为通用回调机制 - 在测试时特别有用 - 以及我的通用sprintf替换的格式.
最后,就在前几天,当我在愤怒中使用Variant来解决问题时(一个解析器可以使用一小组固定的无关令牌类型进行响应).解决方案非常优雅,我对它非常满意.
使用元组迭代地图,如下所示:
string key, value;
BOOST_FOREACH(tie(key, value), my_map) { ... }
Run Code Online (Sandbox Code Playgroud)
使用boost赋值,我可以初始化这样的地图:
map<string, string> my_map = map_list_of("key1", "value1")("key2", "value2")("key3", "value3");
Run Code Online (Sandbox Code Playgroud)
使用范围适配器和管道("|")运算符,我可以向后迭代地图的值(作为示例):
BOOST_FOREACH(string value, my_multimap.equal_range("X") | map_values | reversed) { ... }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18328 次 |
最近记录: |