例如:
我能做些什么,这可能让我这样做:
for(TiXmlElement * pChild = elem->First(), int i=0; // note multiple type declarations
pChild;
pChild=pChild->NextSiblingElement(), i++) // note multiple types
{
//do stuff
}
也许有一个boost
标题?
答案 0 :(得分:8)
不。
如果要将变量的范围限制为循环,只需添加另一个范围:
{
TiXmlElement * pChild = elem->First();
int i = 0;
for(; pChild; pChild=pChild->NextSiblingElement(), i++)
{
//do stuff
}
}
答案 1 :(得分:5)
块不必附加到函数或条件。您可以使用块包围任何代码段,以将临时变量的范围限制为该块。
{
TiXmlElement * pChild;
int i;
for ( pChild = elem->First(), i = 0;
pChild;
pChild = pChild->NextSiblingElement(), ++i )
{
// do stuff
}
}
答案 2 :(得分:2)
从C ++ 17开始,structured bindings可以引入多个变量:
// multiple type declarations
for (auto [pChild, i] = std::tie(elem->First(), 0); pChild; pChild = pChild->NextSiblingElement(), ++i) {
// ...
}
pChild
是TiXmlElement*
,而i
是int
。