我想知道是否有Delphi的等效项
var
StringList: TStringList;
for str in StringList do
在C ++ Builder中。
最佳答案
根据Embarcadero的DocWiki:
C++ Iterator Support for Delphi Enumerable Types and Containers
以下是可用作类型的迭代器的经验法则。
如果类型仅具有GetEnumerator()
方法,则可以使用Range-for和一组有限的只读STL算法。
如果类型的下标为operator[]
,则可以使用Range-for和所有只读STL算法。
...
...
TRandomIterator::<T,E>
为每个实现整数下标运算符TRandomIterator::<T,E>
和整数E operator[ ](int)
属性的RTL容器定义Count
。
...
TEnumerableIterator<T>
为每个实现TEnumerableIterator::<T>
方法的Delphi RTL容器定义了GetEnumerator()
。返回的Enumerator Type还必须支持GetCurrent()
和MoveNext()
方法。 RTL代码中经常使用此模式,因此它涵盖了很大一部分容器。
...TStringList
满足GetEnumerator()
和operator[]
的要求,因此,至少在CLang-based compilers中,您可以执行以下操作:
TStringList *StringList = ...;
for (auto str : StringList)
{
...
}
std::for_each(std::begin(StringList), std::end(StringList), ...);
此功能已在C ++ Builder 10.1 Berlin中添加。
有关更多详细信息,请参见Using Delphi containers from C++
关于delphi - 在C++ Builder中是否有“字符串列表中的字符串用于字符串”的等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54400447/