В отличие от того, что говорит другой ответ, компилятор имеет большое значение .Только C ++ Builder может использовать типы в библиотеке визуальных компонентов , которая написана на Delphi (Object Pascal).
TStringList является одним из таких классов.Это контейнер (с некоторыми дополнениями) для System :: String экземпляров (то есть не std :: vector , содержащий std :: string экземпляров).
TStringList не предоставляет итераторов C ++, поэтому AFAIK, в настоящее время, ваш единственный выбор - индексирование:
TStringList *list = new TStringList();
// fill list
for (int i = 0; i < list->Count; ++i)
{
// ...
}
delete list;
Конечно, вы можете использовать std::vector<System::String>
, но это не даст вам дополнительной функциональности TStringList (например, хранение связанных объектов - например, растровых изображений - или специальную обработку key = value строки т. д.).
Обновление
Я, должно быть, сделал что-то не так.Как отметил Реми Лебо, это на самом деле возможно:
TStringList *list = new TStringList();
list->Add("Hello");
list->Add("World");
for (System::String str : list)
{
std::wcout << str.c_str() << std::endl;
}