В C ++ есть ли способ перейти к определенной строке в текстовом файле?

вектор символа хорош, потому что память непрерывна. Поэтому можно использовать его с большим количеством API C, такого как сокеты berkley или API файла. Можно сделать следующее, например:

  std::vector<char> vect;
  ...
  send(sock, &vect[0], vect.size());

и это будет хорошо работать.

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

оборотная сторона изменяет размеры, не ужасно эффективно (измените размеры или предварительно выделите разумно), и удаление от передней стороны массива также будет очень неэффективно. Если необходимо, скажем, вытолкать всего один или два символа за один раз от передней стороны структуры данных очень часто, копируя в двухстороннюю очередь, прежде чем эта обработка сможет быть опцией. Это стоит Вам, память копии и двухсторонней очереди не непрерывна, таким образом, Вы не можете только передать указатель на API C.

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

21
задан Jim 5 March 2011 в 23:36
поделиться

1 ответ

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

Если нетром говорит , вы знаете, что линии имеют фиксированную длину, да .

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

0
ответ дан 29 November 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: