2012-04-27 5 views
0

Это требование я должен следовать:Чтение слова из текстового файла

Там будет стиль C++ или строка типа C, чтобы держать слово. Int для подсчета каждого слова. Структуру или класс для хранения обоих. Этот struct/class будет вставлен в список STL. Вам также понадобится строка стиля C или C++, чтобы удерживать строку текста, которую вы читаете из файлов. Вы будете разбирать эту строку в словах в соответствии с определением слова в спецификации назначения.

Первая часть кажется в порядке, но во втором я до сих пор не понимаю смысла читать строку, а затем разбирать ее в слово. Является ли это более эффективным, чем чтение прямо из текстового файла?

+0

Вы пробовали это самостоятельно? –

+0

используя что? - – Antoine

ответ

2

Эффективность зависит от определения слова (которое вытекает из спецификации присваивания): если вам нужно пройти через linem более одного раза, чтобы определить, где начинается/заканчивается слово (то есть то, что принадлежит слову) , более эффективно поддерживать линию в памяти, а затем выполнять чтение с диска несколько раз (хотя влияние производительности может быть уменьшено кэшем ввода-вывода).

Даже если нет увеличения производительности, это будет домашнее задание, я думаю, вас попросят сделать это, чтобы узнать: 1) как читать строки (строки) из файла; 2) как разбирать строку в памяти. Чтобы достичь двух целей сразу, у вас есть это требование:

0

чтение в строке из файла с использованием fstream, а затем разбор его на слова путем прошивки в пространстве и до конца строки в loop.

0

В зависимости от вашего варианта использования может быть полезно читать файлы по строкам.

Сначала считывание всего файла в памяти и последующее его разборка не сводят к минимуму использование памяти. Память, необходимая для запуска вашей программы, будет по меньшей мере размером файла. Если входной файл большой по сравнению с памятью, доступной вашей программе, вы не сможете выделить достаточно памяти для хранения всего файла (попробуйте выделить строку размером 20 ГБ, чтобы узнать, что произойдет).

С другой стороны, если вы читаете строки за строкой, в памяти требуется только один размер одной строки: вы можете немедленно освободить память, выделенную для предыдущих строк.

Так разборе построчно полезна, если:

  • Входные файлы слишком большой, чтобы поместиться полностью в памяти
  • Размер каждой линии достаточно мал (чтение построчно не поможет, если файл состоит из одной большой линии)
Смежные вопросы