【发布时间】:2009-05-22 18:19:19
【问题描述】:
我经常需要在我的 C++ 代码中迭代一个字符串列表。
在像 Perl 这样的语言中,这很容易:
foreach my $x ("abc", "xyz", "123") {.... }
过去,这是我在 C++ 中所做的
const char* strs[] = { "abc", "xyz", "123" };
for (int i=0; i<sizeof(strs)/sizeof(const char*); i++) {
const char *str = strs[i];
...
如果我已经有一个 STL 容器,我可以使用 BOOST_FOREACH
std::vector<std::string> strs;
BOOST_FOREACH(std::string str, strs) {
...
我尝试创建一个宏来组合所有这些概念,但没有成功。
我希望能够编写这样的代码:
SPECIAL_STRING_FOREACH(const char* str, {"abc", "xyz", "123"}) {
...
}
肯定有人以前做过这个。
【问题讨论】: