В продолжении, а как вывести в консольном приложении объект string cout<< и printf не получается. Может есть стандартные функции? Сразу чтоб не постить много. С помощью какой функции можно найти подстроку в объекте string :? Заранее спасибо.
2Gin PHP: //Резервируем и выделяем побайтно память buffer = (char *)VirtualAlloc(NULL, 1000, MEM_RESERVE, PAGE_READWRITE); buffer = (char *)VirtualAlloc(buffer, 1, MEM_COMMIT, PAGE_READWRITE); //Читаем из сокета побайтно, чтобы быть уверенными, что вся инфа дошла while(recv(sRemoteSock, &buffer[i], 1, 0)) { //Если встретили перевод строки, то ппц конец передачи if(buffer[i] == '\n') { buffer[i] = '\0'; printf("[>] Client say : %s\n", buffer); VirtualFree(buffer, 0 , MEM_RELEASE); i = 0; break; } else { //Выделяем ещё один байт buffer = (char *)VirtualAlloc(buffer + i++ + 1, 1, MEM_COMMIT, PAGE_READWRITE); } } Как то так ) Тут концом сообщения считается перевод строки (можно переделать). Можно в принципе поблочно считывать, а не побайтно.
Че то как то сложно, ведь в string'e есть метод find. И к тому же есть функция strtok, которая разбивает строку на лексемы(при первом вызове задается по какому символу разделяем, в последующих вызовах передаем NULL) И кстати у меня std::cout << переменная_стринг выводится без проблем, т.е. не надо преобразовывать в char по средствам c_str(). Но я всегда подключал <string>
2Ra$cal а есть какойнибудь цинус использовать вместо API CRT-функции? Мне так например проще ) хотя да при работе с ANSI строками я буду использовать CRT, да и то не всегда. Так что мне не совсем понятно ваше негодование по этому поводу ) ЗЫ Да и давайте не будем тут о кросплатформенности ^_____^
Hiro Protagonist ну давай еще в питоне будем VirtualAlloc юзать. Самый простой пример - выделяя память через апи ты получишь выравнивание страницы до 4096 байт, таким образом в случае аллока мелких блоков ты просто засрешь оперативу. Это раз. Во вторых - утечки памяти таким образом не отследить - это два. Заменить вызов VirtualAlloc на HeapAlloc было бы гораздо логичнее и правильнее, но это так же приведет к гемору - контроль размера кучи, невозможность отслеживания утечек памяти. Если тебе эти проблемы до сих пор не известны - то сочувствую. Они есть, просто ты о них не знал =) И еще - никогда не смешивают разные стили и технологии. Если юзают qt - юзают его классы. Если boost - то его. Например filesystem и классы работы с файлами qt не перемешивают в адеквате. Это банально упрощает читабельность кода.
2Ra$cal Мы говорим о Питоне? Код на Си (прошу заметить именно на Си), значит мы и говорим про Си. О да, о да. Как будто используя другие функции мы этого не получим. Память всегда выделяется по странично. Библиотечные функции работают лишь по выделенному региону(ам) на куче, эмулируя выделение памяти. А кучи (Heap* функции) надо сказать довольно глючный инструмент ), который не рчень то и рекомендуется использовать. В конечном итоге все использует VirtualAlloc ) И да ты прав, у меня не такие большие проекты, чтобы использовать автоматизированный контроль утечек памяти - достаточно внимательности ) . Ну так и инструменты выбирают под задачу, а не наоборот. Хотя надо признать в вышеприведенном куске смысла коммитить каждый байт нету ^______^ да, говнокод ) но пытаюсь исправится ).
Именно поэтому я и рекомендую использовать Си-стайл. А именно malloc и free. Правда логично? =) Так вот именно поэтому они и работают так, эмулируя кучу - чтобы использовать память эффективно. В твоем же случае гарантированно память будет неиспользована. В случае с crt - память будет исплоьзована. Еще одна засада - дефолтная куча создается при создании процесса =) Так что ты ее просто динамишь, соотв так же просираешь =) Именно поэтому и следует не писать велосипед на костылях, а юзать malloc =) И? Не вижу тут оправдания неумелого использования языка =)
Хочу написать чекер, но на странице много яваскриптов, возник вопрос для корректной работы с яваскриптами достаточно отправлять корректные HTTP заголовки или нужны еще какие либо надстройки для правильной работы. Извините за сумбурное изложение, но надеюсь меня поймете. Если не тяжело покажите в какую сторону копать, по части программирование на С++ для сети (в частности для веба). Спасибо.
смотри, не отправляет ли заголовков сам яваскрипт + он может изменять на лету скрытые поля - это надо отслеживать, иначе сервер данные формы не примет в остальном яваскрипт роли не играет, насколько мне известно
2Диск and 2All Если я отслежу последовательность своих действий HTTPAnalyzer'ом к примеру ну и просто сохраню все отсланные моим браузером заголовки (разумеется поменяю то что нужно мне) так оно будет работать или все же тут есть свои ньансы?
Возник еще вопрос Вообщем нужно создать много файлов определенного содержания вида file1.txt file2.txt проблема в том что не могу привести тип int to string Code: std::string name; int i; name.append("file"); name.append((char)i); name.append(".txt"); Отказывается работать вообще, как только не пытался уже подскажите плз что делать.
и как же ты пробовал? string str = ""; char tmp [20]; itoa(10, tmp, 10); str.append(string(tmp)); cout << str.c_str();