Форум программистов, компьютерный форум, киберфорум
Наши страницы

Boost C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
#1

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

18.04.2013, 17:04. Просмотров 2475. Ответов 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 алгоритмы работы с файлами (Boost C++):

Boost начало работы: Undefined reference to `boost::system::generic_category() ' - Boost C++
Добрый день Собственно говоря возникла необходимость использовать boost в работе. Поставил так: sudo apt-get install boostlib-all-dev ...

boost::asio работа с файлами - Boost C++
Здравствуйте. Есть ли у когонибудь рабочий пример приема\передачи файлов через asio по сети(синхрон или асинхрон)?

boost thread есть много памяти - Boost C++
Есть небольшой код #include &lt;boost/thread/thread.hpp&gt; #include &lt;boost/thread/mutex.hpp&gt; using namespace std; void...

Есть ли в BOOST функция для подсчета файлов в дирректории? - Boost C++
Есть ли в BOOST функция для подсчета фалов в дирректории (то есть чтоб одной строкой, без использования итераторов)?

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

boost::bind прекращение работы программы microsoft optimizing compile - Boost C++
Всем привет! При компилирование выскакивает окошко с надписью &quot;прекращение работы программы microsoft(К) С/C++ optimizing compile&quot;, если...

7
Jupiter
Каратель
Эксперт С++
6564 / 3985 / 227
Регистрация: 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 / 2
Регистрация: 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
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,383
Записей в блоге: 17
18.04.2013, 18:52 #4
Если важна скорость может стоит использовать Си -ф-ции fprint/fscan итп... они вроде дают возможность читать быстрее чем потоки i/o
1
Dmitriy_M
1371 / 1254 / 114
Регистрация: 20.03.2009
Сообщений: 4,477
Записей в блоге: 11
19.04.2013, 22:53 #5
Цитата Сообщение от No10 Посмотреть сообщение
допустим воспользовался Qt
Шутник. QString оперирует юникодом, что влияет на производительность.

Цитата Сообщение от No10 Посмотреть сообщение
она оооочень существенна.
поставь ssd.
1
No10
30 / 28 / 2
Регистрация: 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
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
27.04.2013, 23:40 #7
No10, Рассказать почему? Си в вводе/выводе априори быстрее плюсов. Более интересный вариант: вы пробовали в debug режиме, попробуйте в release. В С++ удобная работа с вводом-выводом. В СИ быстрая.
0
Dmitriy_M
1371 / 1254 / 114
Регистрация: 20.03.2009
Сообщений: 4,477
Записей в блоге: 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 Log - undefined reference to `boost::system::system_category()' - Boost C++
Пытаюсь скомпилировать код из примеров Boost Log:#include &lt;boost/log/trivial.hpp&gt; int main(int, char*) { ...

использование boost и boost.build с несколькими компиляторами - Boost C++
Здравствуйте! Собрал библиотеку boost и boost.build для двух компиляторов: MinGW 4.5.2 и Visual C++ 2010 Express Edition. Для этого...

Метапрограммирование в boost::proto (boost::spirit) - Boost C++
В библиотеке boost:: proto есть такой код calculator&lt;proto::terminal&lt;placeholder&lt;0&gt; &gt;::type&gt; const _1; ...

Boost::asio клиет-сервер - есть ощущение, что где-то что-то блокируется, не знаю как это дебажить - Boost C++
Привет! Область эта для меня новая, поэтому такие вопросы. Смотрите - есть асинхронный сервер(работает на одной io_service) и много...


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

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

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