У меня есть вопрос относительно чтения *.txt
файл с C ++. Я пытаюсь прочитать только часть данных между каким-то конкретным знаком, как [start]
а также [end]
,
Как я могу это сделать?
Я знаю, как открыть и прочитать весь файл, но я не знаю, как прочитать только его часть с такими требованиями.
использование std::string
а также std::getline
отфильтровать строки и идти оттуда. Пример:
std::ifstream input("someText.txt");
std::string line;
unsigned int counter = 0;
while (std::getline(input, line))
{
std::cout << "line " << counter << " reads: " << line << std::endl;
counter++;
}
Кроме того, вы можете использовать substr()
метод std::string
класс для фильтрации подстрок. Вы также можете маркировать слова (вместо строк) с std::getline
используя необязательный третий аргумент, который является токенизатором. Пример:
std::ifstream input("someText.txt");
std::string word;
unsigned int counter = 0;
while (std::getline(input, word, ' '))
{
std::cout << "word #" << counter << " is: " << word << std::endl;
counter++;
}
Здесь можно прочитать слово за словом, пока вы не получите нужный начальный тег, а затем прочитать и сохранить все слова, пока не будет прочитан конечный тег.
Если вы создаете этот файл .txt самостоятельно, создайте его структурированным способом, сохраняя смещение и размер различных блоков в начале. если это так, вы можете прочитать смещение требуемого блока данных с начала и перейти к нему с помощью fseek (или аналогичного). В противном случае вы должны читать слово за словом.