Форум программистов, компьютерный форум, киберфорум
Наши страницы
Boost C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
No10
30 / 28 / 4
Регистрация: 03.06.2010
Сообщений: 465
#1

Есть ли в boost алгоритмы работы с файлами

18.04.2013, 17:04. Просмотров 2742. Ответов 7
Метки нет (Все метки)

Подскажите пожалуйста если есть в boost, алгоритмы работы с файлами? Мне нужно чтение файла по строчно.
P.S.
Слышал как люди нахваливали скорость boost, его классные и удобные алгоритмы, воодушевился и когда писал очередную программу изначально вписал QVector, скорость обработки одних и тех же данных около 12827ms(это среднее значение из 10 засеченных мною), затем решил попробовать вектора от boost,
C++
1
2
3
4
#include <boost/container/vector.hpp>
//......
boost::container::vector<T> myVector;
//......
Скорость в среднем 13117ms, печальное начало работы с boost.
Вообщем кто знает boost приведите пожалуйста алгоритм построчного чтения файла, если таковой существует. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2013, 17:04
Ответы с готовыми решениями:

Boost начало работы: Undefined reference to `boost::system::generic_category() '
Добрый день Собственно говоря возникла необходимость использовать boost в...

boost::asio работа с файлами
Здравствуйте. Есть ли у когонибудь рабочий пример приема\передачи файлов через...

boost thread есть много памяти
Есть небольшой код #include &lt;boost/thread/thread.hpp&gt; #include...

Есть ли в BOOST функция для подсчета файлов в дирректории?
Есть ли в BOOST функция для подсчета фалов в дирректории (то есть чтоб одной...

Обертка над boost::lexical_cast для работы с unsigned типами
Пару дней назад выяснилось, что boost::lexical_cast не удовлетворяет...

7
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.04.2013, 17:09 #2
Цитата Сообщение от No10 Посмотреть сообщение
построчного чтения файла
для этого boost не нужен, достаточно стандартной библиотеки с++

C++
1
2
3
4
5
6
7
8
9
{
    std::string str;
    std::ifstream file("myfile");
    //..
    while (std::getline(file, str))
    {
    //..
    }
}
1
No10
30 / 28 / 4
Регистрация: 03.06.2010
Сообщений: 465
18.04.2013, 17:16  [ТС] #3
Jupiter, да само собой и библиотекой std все прекрасно считается, я допустим воспользовался Qt:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
    QFile file(fileName);
 
    //открываем файл
    if ( !file.open(QIODevice::ReadOnly | QIODevice::Text) )
        QMessageBox::warning(0, QObject::tr("File error"), QObject::tr("File not open!"));
 
        QTextStream in(&file);//помещаем файл в поток
    
        while (!in.atEnd()) {
            QString line = in.readLine();
            //дальше действия с line
        }
Я заинтересован в скорости, может boost читает файлы быстрей чем аналоги) Мне самое главное скорость, она оооочень существенна.
0
Avazart
Эксперт С++
7719 / 5628 / 549
Регистрация: 10.12.2010
Сообщений: 25,349
Записей в блоге: 17
18.04.2013, 18:52 #4
Если важна скорость может стоит использовать Си -ф-ции fprint/fscan итп... они вроде дают возможность читать быстрее чем потоки i/o
1
Dmitriy_M
1425 / 1306 / 130
Регистрация: 20.03.2009
Сообщений: 4,661
Записей в блоге: 11
19.04.2013, 22:53 #5
Цитата Сообщение от No10 Посмотреть сообщение
допустим воспользовался Qt
Шутник. QString оперирует юникодом, что влияет на производительность.

Цитата Сообщение от No10 Посмотреть сообщение
она оооочень существенна.
поставь ssd.
1
No10
30 / 28 / 4
Регистрация: 03.06.2010
Сообщений: 465
27.04.2013, 22:01  [ТС] #6
Dmitriy_M, сделал через Cишные функции:
C++
1
2
3
4
5
6
7
8
9
    /*Работа с файлом*/
    FILE * fi;
    fi = fopen(fileName,"rt"); // rt означает открытие текстового файла на чтение
    char cNow; //текущий элемент
    char cLater; //предыдущий элемент
 
    /*Запускаем цикл! Выйдя из него всё будет готово!*/
    while( !feof(fi) ) {
        cNow = getc(fi); //читаем символ
Прошлый алгоритм обрабатывал 12 секунд, а этот 0.940, я сначала думал ошибка какая то, все перепроверял, но нет все правильно)

Добавлено через 52 секунды
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
поставь ssd.
ммм... ssd что это и для чего?
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
27.04.2013, 23:40 #7
No10, Рассказать почему? Си в вводе/выводе априори быстрее плюсов. Более интересный вариант: вы пробовали в debug режиме, попробуйте в release. В С++ удобная работа с вводом-выводом. В СИ быстрая.
0
Dmitriy_M
1425 / 1306 / 130
Регистрация: 20.03.2009
Сообщений: 4,661
Записей в блоге: 11
28.04.2013, 00:49 #8
Цитата Сообщение от No10 Посмотреть сообщение
ммм... ssd что это и для чего?
Твердотельный накопитель
Цитата Сообщение от No10 Посмотреть сообщение
Прошлый алгоритм обрабатывал 12 секунд
Прошлый это какой?
0
28.04.2013, 00:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2013, 00:49

boost::bind прекращение работы программы microsoft optimizing compile
Всем привет! При компилирование выскакивает окошко с надписью &quot;прекращение...

Boost Log - undefined reference to `boost::system::system_category()'
Пытаюсь скомпилировать код из примеров Boost Log:#include...

Использование boost и boost.build с несколькими компиляторами
Здравствуйте! Собрал библиотеку boost и boost.build для двух компиляторов:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru