不可错误的C++库...
手上有一个工程,用到了boost,之前编译链接一切正常。但在将该工程加入Precompiled Header支持后,出现了奇怪的链接错误:
引用
about.obj||error LNK2001: unresolved external symbol "public: static class std::locale::id boost::date_time::date_facet > >::id" (?id@?$date_facet@Vdate@gregorian@boost@@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@date_time@boost@@2V0locale@std@@A)|
还是决定使用Code::Blocks,尽管智能提示功能很弱:但看中其跨平台和免安装(便携)且节省至少1G的C盘空间(即使VCExpress+.NET3.5)。于是自己架上了GCC4.3.2编译环境,自己编译Code::Blocks最新的SVN版本,决定边学Code::Blocks的源码,边写Life++ 3.x!
今天在写一个作业统计的软件时,需要将相应的wxTextCtrl只能输入数字、空格以及横杠。如果用户输入了其他字符,则弹出窗口提示,并将不可以接受的字符删除。在设计时应用了一下boost::lexical_cast的异常机制:如果将纯字母转化成数字,将抛出异常,进而比较巧妙的解决了问题。
boost::filesystem应该会进入tr2,将成为C++0x的标准。这是一个跨平台的文件、路径操作操作库,通过其自身文档,可以很容易的实现多层目录的创建、目录与文件的判断,目录、文件的递归查找。
越是使用跨平台库,就越不愿意使用Windows API。以后能够用跨平台库、标准库解决的问题,坚持不使用WinAPI!
下面是一个递归查找的简单例子,支持宽字符。注:喜欢Unicode编程,但boost::filesystem::current_path()竟然不支持std::wstring,只能期待以后版本中能加强了。
项目中需要分解字符串,于是使用boost::tokenizer。为了以后扩展,决定要同时支持ANSI和Unicode编译,并且使用标准库。
首先定义tString:
#ifdef _UNICODE
typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>> tString;
#else
typedef std::basic_string<char, std::char_traits<char>, std::allocator<char>> tString;
#endif
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]