2013-05-06 2 views
2

У меня есть вопрос относительно чтения файла *.txt с C++. Я пытаюсь прочитать только часть данных между определенным значком, например [start] и [end].Прочтите часть файла txt с C++

Как я могу это сделать?

Я знаю, как открыть и прочитать весь файл, но я не знаю, как читать только его часть с такими требованиями.

ответ

1

Используйте 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++; 
} 
0

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

0

Если вы создаете этот .txt-файл самостоятельно, создайте его структурированным способом, сохраняя смещения и размер различных блоков в начале. если это так, вы можете прочитать смещение требуемого блока данных с начала и перейти туда, используя fseek (или аналогичный). В противном случае вы должны читать слово за словом.

Смежные вопросы