Форум программистов, компьютерный форум CyberForum.ru

Парсинг потоками - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Связный список http://www.cyberforum.ru/cpp-beginners/thread366546.html
... struct node { int data; node *next; }; ... node *temp; 1.temp = (node*)malloc(sizeof(node));
C++ Функция // binary_search_with_fun.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using namespace std; int *Bin_Srch(int *first, int *last, int key) { http://www.cyberforum.ru/cpp-beginners/thread366544.html
Подсчет через count_if C++
Есть, например, функция, принимающая 2 параметра bool BoolFunction ( параметр1, параметр2 ) { // что - то там } где параметр1 - это элемент типа вектора нужно подсчитать в векторе, сколько элементов удовлетворяют условиям BoolFunction. Сделать так не получается:
C++ Ввести размерность матрицы с клавиатуры
Задача: создать массив N*M, (ввод размерности с клавиатуры) и вывести его на экран. Написала код, но где-то видимо туплю, помогите, пожалуйста.:-#include <iostream> using namespace std; int main() {setlocale(LC_ALL,"Russian"); int nSize ; // Размер массива int mSize; cout << "Input n: "; cout << "Input m: "; cin...
C++ Написать программу. Строка, состоящая из символов... http://www.cyberforum.ru/cpp-beginners/thread366531.html
Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки и обработку строки: Преобразовать строку таким образом, чтобы все слова в ней были напечатаны наоборот.
C++ Скопировать элементы большие числа а в другой динамически созданный массив Организовать ввод динамического массива размером N. Скопировать элементы большие числа а(а вводится пользователем) в другой динамически созданный массив. Главное чтобы это было все с использованием указателей и на С++ Console Wizard Помогите плиз подробнее

Показать сообщение отдельно
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
15.10.2011, 04:32     Парсинг потоками
Здравствуйте.
У меня есть текстовый файл объёмом где-то 10-50 мегобайт. В нём в текстовом виде хранятся числа и строки в известном мне формате. Как наилучшим образом его считать и пропарсить?
То как это реализовано сейчас:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
UNVData::UNVData(std::string fileAdr)
{
    std::fstream f(fileAdr, std::ios::binary | std::ios::in);
 
    if(!f)
    {
        std::cerr << "Can't open file \"" << fileAdr << "\" licke binary!";
    }
    else
    {
        std::istringstream stream;
        f.seekg( 0, std::ios::end );
        std::ios::pos_type fSize = f.tellg();
        f.seekg( 0, std::ios::beg );
        
        char* file = new char[static_cast<unsigned long>(fSize) + 1];
        f.read( file, fSize );
        file[static_cast<unsigned long long>(fSize)] = 0;
 
        stream.str(file);
 
        delete[] file;
        
        /*Далее извлечение из потока по формату.*/
 
    }
}
Очевидные минусы:
1. Простой процессора во время считывания файла с диска
2. Использование массива просто чтобы перегнать данные в поток (по крайней мере время на переписывание информации из массива в поток и время на выделение массива).
Естественно, я знаю что можно просто брать данные из файлового потока, но, на сколько я понимаю, тогда информация будет считываться крошечными порциями. В такой ситуации жесткий диск должен работать очень неэффективно.

Буду рад услышать о более совершенных вариантах или узнать оправдательные аргументы в пользу высказанных выше.
Хочу отметить, что уже реализовал быстрый разбор файла в стиле Си, но хотелось бы попытаться выполнить задачу в рамках объектно-ориентированного подхода.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru