Code: ostream& operator << (ostream& stream, char* rout) { char* tmp; tmp = new char[strlen(rout) + 1]; CharToOem(rout, tmp); stream.write(tmp, strlen(tmp)); delete [] tmp; return stream; } void main() { cout << "Русский текст" << endl; } http://www.makak.ru/2008/02/19/vyvod-russkix-bukv-v-konsolnyx-prilozheniyax-na-c/ VOID Sleep(DWORD dwMilliseconds); - поисчи в файлах *.h //возможн. она в windows.h но не уверен... компилятора по рукойне((
Как установить boost в Visual Studio C++ 2008 ?? Скачал архив с файлами boost_1_36_0.zip с www.boost.org сделал все как написано в FAQ то есть прописал путь к boost в свойствах проекта и изменил use на not use In Configuration Properties > C/C++ > General > Additional Include Directories, enter the path to the Boost root directory, for example C:\Program Files\boost\boost_1_36_0 In Configuration Properties > C/C++ > Precompiled Headers, change Use Precompiled Header (/Yu) to Not Using Precompiled Headers.3 только у меня папка на рабочем столе и путь такой C:\Documents and Settings\dd\Рабочий стол\boost_1_36_0\boost В результате компиляции программы которая испльзует boost выдает ошибки для каждого файла .ссp вот пример c:\documents and settings\dd\рабочий стол\boost_1_36_0\boost\regex.hpp(28) : fatal error C1083: Cannot open include file: 'boost/regex/config.hpp': No such file or directory Window.cpp Хотя файл config.hpp у меня есть в чем проблема ? До установки boost прога не могла найти regex.hpp после установки на это не ругается но почему то config.hpp' невидет
конечно есть там решения типа уменьшения времени выполнения цикла путём добавление if-ов (выйгрыш составляет доли секунды), но я думаю тебе пока рано об етом думать!
if'ы ускоряют?! Вообще-то условные операторы очень медленные и надо писать линейный код. Подобный выигрыш находится примерно на уровне погрешностей и не является существенным
Использовать оптимизацию компилятора. ИМХО для современных компиляторов нет разницы for или while. Ты бы хоть цикл свой написал, с какими числами работаешь? Ну или можно так: for (int x = 0; x < 100; x++) { delete(x); } обычный цикл for (int x = 0; x < 100; x += 5) { delete(x); delete(x+1); delete(x+2); delete(x+3); delete(x+4); } оптимизированный. Не думаю что разница будет очень уж заметна.
iostream медленный. Используй сишные библиотеки, <cstdio> #include <cstdio> using namespace std; void main(){ signed short i=0; while(i < 5000){ printf("%d\n", i); i++ } }
используй апи Code: #include <windows.h> #pragma comment(linker,"/ENTRY:Mymain") void Mymain(){ signed short i=0; HANDLE std=GetStdHandle(STD_OUTPUT_HANDLE); char buf[10]; while(i < 5000){ _ultoa(i++,(char*)buf,10); lstrcat((LPSTR)buf,"\n"); int len=lstrlen((LPCSTR)buf); WriteFile(std,(LPCVOID)buf,len,(LPDWORD)&len,0); } }
http://msdn.microsoft.com/en-us/library/ms737591(VS.85).aspx http://msdn.microsoft.com/en-us/library/ms737593(VS.85).aspx
как зделать чтобы программа печатала квадрат звёздочками заданого размера? типа если размер = 5 то квадрат (С++) * * * * * * * * * * * * * * * * ну типа тут квадрат ))
for (int i = 0; i < qwerty; i++) { for (int j = 0; j < qwerty; j++) {cout << "*";} cout << "\n"; } // где qwerty сторона квадрата Пример программы: PHP: #include <iostream.h> int main() { int qwerty; cin >> qwerty; for (int i = 0; i < qwerty; i++) { for (int j = 0; j < qwerty; j++) {cout << "*";} cout << "\n"; } int r; // что бы консоль не "убегала" :) cin >> r; }
лучше #include <conio.h> getch() //в конце проги ЗЫ: йа такой вопрос, чтобы консол не убегала задавал)
ChaaK, покури "Крис Касперски. Самоучитель игры на WinSock" _http://kpnc.opennet.ru/sock.pdf там на русском очень подробно описан алгоритм работы сокетов.
пробую перехватить MessageBoxA. Код библиотеки: Code: #include <stdafx.h> struct jmp_far { BYTE op_push; DWORD arg; BYTE op_ret; }; BYTE buf[6]; DWORD adrmesbox; DWORD written; jmp_far jump; BOOL WINAPI intMesbox(HWND hwnd, char *text, char *hdr, UINT utype) { WriteProcessMemory(GetCurrentProcess(), (void*)adrmesbox, (void*)&buf, 6, &written); char *str = "перехвачено111"; ((BOOL (__stdcall*)(HWND, char*, char*, UINT))adrmesbox)(hwnd, str, hdr, utype); WriteProcessMemory(GetCurrentProcess(), (void*)adrmesbox,(void*)&jump, 6,&written); return 1; } void intercept(void) { adrmesbox = (DWORD)GetProcAddress(GetModuleHandleA("user32.dll"),"MessageBoxA"); if(adrmesbox == 0) { MessageBoxA(NULL, "MessageBoxA не найден", "ошибка", 0); return; } jump.op_push = 0x68; jump.arg = (DWORD)&intMesbox; jump.op_push = 0xC3; ReadProcessMemory(GetCurrentProcess(), (void*)adrmesbox, (void*)buf, 6, &written); WriteProcessMemory(GetCurrentProcess(), (void*)adrmesbox, (void*)&jump, 6, &written); } BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { if(ul_reason_for_call == DLL_PROCESS_ATTACH ) { intercept(); } return 1; } void main(void) { } После того как я вставляю эту dll в процесс, запускаю MessageBoxA. Ничего не происходит, а должен появиться бокс с сообдением "перехвачено". Visual Studio 2008 сама статья - http://www.rsdn.ru/article/baseserv/IntercetionAPI.xml
Чуваки немного не могу разобраться в Visual Studio Вобщем как я прочитал есть несколько видов точек останова "переходить в режим останова немедленно" "переходить в режим останова в зависимости от условия" "переходить заданное число раз" Вот по условию есть там такая тема он переходит в режим останова в случае если условие true или если условие было изменено. Это как понять? В режиме вычисления условия или еще до вычисления или после вычисление если условие изменилось?))