Учась немного больше на предмет этого ответа, я понимаю, что это было определенное упрощение. Различие между этим циклом:
for (some_iterator = some_vector.begin(); some_iterator != some_vector.end();
some_iterator++)
{
//do stuff
}
И этот цикл:
for (int i = 0; i < some_vector.size(); i++)
{
//do stuff
}
довольно минимально. На самом деле синтаксис выполнения циклов этот путь, кажется, растет на мне:
while (it != end){
//do stuff
++it;
}
Итераторы действительно разблокировали некоторые довольно мощные декларативные функции, и, когда объединено с библиотекой алгоритмов STL можно сделать некоторые довольно прохладные вещи, которые выходят за рамки индекса массива administrivia.
Для этого вы можете использовать Scripting.FileSystemObject. Из Ссылки :
Метод ReadLine позволяет сценарию читать отдельные строки в текстовом файле. Чтобы использовать этот метод, откройте текстовый файл, а затем настройте цикл выполнения, который продолжается до тех пор, пока свойство AtEndOfStream не станет равным True. (Это просто означает, что вы достигли конца файла.) В цикле Do Loop вызовите метод ReadLine, сохраните содержимое первой строки в переменной, а затем выполните какое-либо действие. Когда сценарий зацикливается, он автоматически опускает строку и считывает вторую строку файла в переменную. Это будет продолжаться до тех пор, пока каждая строка не будет прочитана (или пока сценарий специально не выйдет из цикла).
И быстрый пример:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\FSO\ServerList.txt", 1)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
MsgBox strLine
Loop
objFile.Close
С помощью этого кода вы загружаете файл в память (в виде большой строки) и затем вы читаете эту строку строка за строкой.
Используя Mid $ () и InStr (), вы фактически читаете «файл» дважды, но, поскольку он находится в памяти, проблем нет.
Я не знаю, имеет ли VB String ограничение длины (возможно, нет), но если размер текстовых файлов составляет сотни мегабайт, вероятно, произойдет падение производительности из-за использования виртуальной памяти.
Я думаю, что в сценарии с большим файлом использование потока было бы гораздо более эффективным, потому что потребление памяти было бы очень маленьким.
Но ваш алгоритм может переключаться между использованием потока и загрузкой всего объекта в память в зависимости от размера файла. Я не удивлюсь, если один будет лучше другого только по определенным критериям.