iterator

初始化stl容器,最终四个容器的内容都是1 2 3 4 int d1[4] = {1,2,3,4}; int d2[4] = {5,6,7,8}; vector v1(d1,d1 + 4), v2(d2,d2 + 4), v3(d2,d2 + 4), v4; copy(v1.begin(),v1.end(),v2.begin()); // copy - .begin() copy_backward(v1.begin(),v1.end(),v3.end()); // backward - .end() copy(v1.begin(),v1.end(),back_inserter(v4)); // init a empty vector

2006-11-01 · wuan

regex_replace控制某个子表达式的更新

str = boost::regex_replace(str, reg, "(?1become1)$2(?3become3)$4", boost::format_all ); 其中第一个子表达式更新为become1,第三个子表达式更新为become3。

2006-11-01 · wuan

解析ifconfig输出内容的正则表达式

使用boost::regex库,首先安装libboost-regex-dev # sudo apt-get install libboost-regex-dev #include <deque> #include <iostream> #include <algorithm> #include <boost/regex.hpp> using namespace boost; using namespace std; int main() { string str = "" " eth1 Link encap:Ethernet HWaddr 00:E0:4C:9E:B5:EF\n" " inet addr:192.168.0.193 Bcast:192.168.0.255 Mask:255.255.255.0\n" " inet6 addr: fe80::2e0:4cff:fe9e:b5ef/64 Scope:Link\n" " UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n" " RX packets:25608 errors:0 dropped:0 overruns:0 frame:0\n" " TX packets:23396 errors:0 dropped:0 overruns:0 carrier:0\n" " collisions:0 txqueuelen:1000\n" " RX bytes:27459152 (26.1 MiB) TX bytes:3307863 ( 3.1 MiB)\n" " Interrupt:11 Base address:0xec00\n"; string exp = "" "\s+hwaddr\s+(.{17})" "\s+inet addr:(\d+.\d+.\d+.\d+)" ".mask:(\d+.\d+.\d+.\d+)" ".(\w{2})\s+broadcast.mtu:(\d+).metric:(\d+)" ".packets:(\d+)\s+errors:(\d+)\s+dropped:(\d+)\s+overruns:(\d+)\s+frame:(\d+)" ".packets:(\d+)\s+errors:(\d+)\s+dropped:(\d+)\s+overruns:(\d+)\s+carrier:(\d+)" ".bytes:(\d+).bytes:(\d+)"; regex expressionextended | regbase::icase; deque result; regex_splitback_inserter(result), str, expression; //copy(result.begin(),result.end(),ostream_iterator(cout,"\n"));...

2006-10-16 · wuan

boost::format

std::cout << format("%|1$1| %|2$3|") % "Hello" % 3 << std::endl; 官网的这个例子,其中竖线 | 用来格式化目标串,且必须匹配。 可以把两个竖线及其之间的内容看作一个s,即 %|1$1| == %s 美元 $ 用来填充目标串,后面所跟的数值表示要把目标串填充至多少位。 看几个例子就知道了: std::cout << format("%|1$1| %|2$3|") % "Hello" % 3 << std::endl; Hello 3 <--- 中间两个空格(3 - length("3")) std::cout << format("%|1$8| %|2$2|") % "Hello" % 3 << std::endl; Hello 3 <---...

2006-10-13 · wuan

在非模板类中定义模板成员函数

class TObject { public: template<typename T> void foo(T f_t); }; template<typename T> void TObject::foo(T f_t) { std::cout<<f_t<<std::endl; } int main() { TObject obj; obj.foo("123"); obj.foo(111); return 0; } 刚开始学模板,直觉告诉我这种用法可能有失偏颇~ 但是在没找到证明我的直觉的证据之前,我决定立刻就用:)

2006-10-13 · wuan