ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #5281  
Старый 13.05.2010, 05:16
Аватар для wolmer
wolmer
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме:
4761503

Репутация: 229
По умолчанию

Как прочитать/вывести первую строку из файла на WINAPI?
(вариант fgets - не интересует)

Последний раз редактировалось wolmer; 13.05.2010 в 05:20..
 
Ответить с цитированием

  #5282  
Старый 13.05.2010, 09:26
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

rudvil
ну тут тока std::for_each, а для связывания проще и удобнее использовать http://www.rsdn.ru/article/cpp/boost.bind.xml

Последний раз редактировалось Ra$cal; 13.05.2010 в 09:45..
 
Ответить с цитированием

  #5283  
Старый 13.05.2010, 09:33
Аватар для Ins3t
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме:
2083691

Репутация: 330
По умолчанию

Цитата:
Сообщение от wolmer  
Как прочитать/вывести первую строку из файла на WINAPI?
(вариант fgets - не интересует)
ReadFile() из windows.h
читaй покa нe встрeтишь пeрeвод строки.
 
Ответить с цитированием

  #5284  
Старый 13.05.2010, 10:10
Аватар для St0nX
St0nX
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме:
2823587

Репутация: 106
Отправить сообщение для St0nX с помощью ICQ
По умолчанию

Цитата:
Сообщение от Ins3t  
ReadFile() из windows.h
читaй покa нe встрeтишь пeрeвод строки.
По моему лучше будет считать весь файл(часть его если он большой) в память и потом только разбить на строки.
 
Ответить с цитированием

  #5285  
Старый 13.05.2010, 15:58
Аватар для rudvil
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Цитата:
Сообщение от Ra$cal  
rudvil
ну тут тока std::for_each, а для связывания проще и удобнее использовать http://www.rsdn.ru/article/cpp/boost.bind.xml
Возникла проблема =/
Код:
#include <algorithm>
#include <functional>
#include <iostream>
#include <map>
#include <string>
#include <utility>

#include <boost/bind.hpp>

int main(int argc, char* argv[]) {
  typedef std::map<std::string, std::pair<int, int> > map_type;
  map_type files;
  files["0.txt"] = std::make_pair(0, 7);
  files["1.txt"] = std::make_pair(8, 41);
  files["2.txt"] = std::make_pair(42, 50);
  int num = 21;
  map_type::const_iterator elem;
  elem = std::find_if(
                      files.begin(),
                      files.end(),
                      boost::bind(
                                  std::logical_and<bool>(),
                                  boost::bind(
                                              std::greater_equal<int>(),
                                              boost::bind(
                                                          &map_type::value_type::second_type::first_type,
                                                          _1),
                                              num),
                                  boost::bind(
                                              std::less_equal<int>(),
                                              boost::bind(
                                                          &map_type::value_type::second_type::second_type,
                                                          _1),
                                              num)));
  if (elem != files.end())
    std::cout << "Found in " + (*elem).first + "\n";
  return 0;
}
Компилятор ругается
Цитата:
main.cpp:26: error: expected primary-expression before ',' token
main.cpp:32: error: expected primary-expression before ',' token
т.е. на это:
линия (26) &map_type::value_type::second_type::first_type,
и на это:
линия (32) &map_type::value_type::second_type::second_type ,

т.е. как это expected, если с примером который тут http://www.rsdn.ru/article/cpp/boost.bind.xml#EYVAE всё ок(компилирует без ошибок), а тут на тебе...

Последний раз редактировалось rudvil; 13.05.2010 в 16:04..
 
Ответить с цитированием

  #5286  
Старый 13.05.2010, 17:10
Аватар для rudvil
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Я сделал его!!!
Может кому понадобится, вот код - правда он стал, ммм... не таким понятным как тут
Код:
#include <algorithm>
#include <functional>
#include <iostream>
#include <map>
#include <string>
#include <utility>

#include <boost/bind.hpp>

int main(int argc, char* argv[]) {
  typedef std::map<std::string, std::pair<int, int> > map_type;
  map_type files;
  files["0.txt"] = std::make_pair(0, 7);
  files["1.txt"] = std::make_pair(8, 41);
  files["2.txt"] = std::make_pair(42, 50);
  int num = 21;
  map_type::const_iterator elem;
  elem = std::find_if(
                      files.begin(),
                      files.end(),
                      boost::bind(
                                  std::logical_and<bool>(),
                                  boost::bind(
                                              std::less_equal<int>(),
                                              boost::bind(
                                                          &map_type::value_type::second_type::first,
                                                          boost::bind(
                                                                      &map_type::value_type::second,
                                                                      _1)
                                                          ),
                                              num),
                                  boost::bind(
                                              std::greater_equal<int>(),
                                              boost::bind(
                                                          &map_type::value_type::second_type::second,
                                                          boost::bind(
                                                                      &map_type::value_type::second,
                                                                      _1)
                                                          ),
                                              num)));
  if (elem != files.end())
    std::cout << "Found in " + (*elem).first + "\n";
  return 0;
}
После выполнения мы получим следующее
Цитата:
Found in 1.txt
, т.е. 21 находится между 8 и 41.

Последний раз редактировалось rudvil; 13.05.2010 в 17:15..
 
Ответить с цитированием

  #5287  
Старый 13.05.2010, 19:48
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

молодец =)
Если вдруг интересно зачем такой гемор:
1) У тебя крайний случай когда нет никаких методов, обычно более менее общую логику суют в классы, а дальше композиция получается проще.
2) Суть использования stl - например если решат наконец добавить распараллеливание независимых задач, то стл попадет под это первым со своим for_each, find, transform и всеми остальными алгоритмами. Будет на автопилоте при запуске решаться сколько ядер есть в распоряжении и параллелиться. Но пока это мечты мечты =\
3) С лямбда выражениями, которые в новом стандарте добавились, кодить юзая алгоритмы будет еще проще
 
Ответить с цитированием

  #5288  
Старый 14.05.2010, 21:31
Аватар для M.W.N.N.
M.W.N.N.
Участник форума
Регистрация: 05.01.2009
Сообщений: 191
Провел на форуме:
3020589

Репутация: 240
По умолчанию

Здравствуйте.
Подскажите пож-та что не так.
Решил разобратся с curl + с++
Нашел примеры - http://pblog.ru/?p=607
Там приводят листинг:

Код:
#include <stdio.h>
#include <curl/curl.h>
//главная функция
int main(void)
{
  //уже знакомый объект CURL
  CURL *curl;
  //объект - результат вызова функции curl_easy_perform
  CURLcode res;
  //выполняем инициализацю
  curl = curl_easy_init();
  if(curl) { //проверяем
  //задаем опцию - получить страницу по адресу http://google.com
    curl_easy_setopt(curl, CURLOPT_URL, "google.com");
    //указываем прокси сервер
    curl_easy_setopt(curl, CURLOPT_PROXY, "proxy:8080");
    //задаем опцию отображение заголовка страницы
    curl_easy_setopt(curl, CURLOPT_HEADER, 1);
    //вызываем функцию, выполняющюю все операции, заданные в опциях (получение страницы, передача данных и т.д.), результат - объект типа CURLcode
    res = curl_easy_perform(curl);
    //выполняем обязательное завершение сессии    
    curl_easy_cleanup(curl);
  }
  return 0;
}
При попытке компиляции пишет:

Код:
:~/cpp$ g++ -o curl curl.cpp
/tmp/ccUnjuIz.o: In function `main':
curl.cpp:(.text+0xa): undefined reference to `curl_easy_init'
curl.cpp:(.text+0x31): undefined reference to `curl_easy_setopt'
curl.cpp:(.text+0x4d): undefined reference to `curl_easy_setopt'
curl.cpp:(.text+0x69): undefined reference to `curl_easy_setopt'
curl.cpp:(.text+0x75): undefined reference to `curl_easy_perform'
curl.cpp:(.text+0x85): undefined reference to `curl_easy_cleanup'
collect2: ld returned 1 exit status
Что не так?
 
Ответить с цитированием

  #5289  
Старый 14.05.2010, 22:12
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

lib файл подключен? или какой там файл в никсах
 
Ответить с цитированием

  #5290  
Старый 14.05.2010, 22:24
Аватар для M.W.N.N.
M.W.N.N.
Участник форума
Регистрация: 05.01.2009
Сообщений: 191
Провел на форуме:
3020589

Репутация: 240
По умолчанию

А какой подключать то? Я думал что библиотеки curl/curl.h хватит
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP, PERL, MySQL, JavaScript 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ