[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. ToniKapuchon

    ToniKapuchon Elder - Старейшина

    Joined:
    26 Feb 2006
    Messages:
    153
    Likes Received:
    45
    Reputations:
    -1
    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 но не уверен... компилятора по рукойне((
     
    #1521 ToniKapuchon, 6 Sep 2008
    Last edited: 6 Sep 2008
    1 person likes this.
  2. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Да, Sleep
     
    1 person likes this.
  3. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    ToniKapuchon а не легче setlocale(LC_ALL,"Russian");
     
    3 people like this.
  4. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Да, Sleep в windows.h
     
    1 person likes this.
  5. eti

    eti New Member

    Joined:
    25 Oct 2007
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Как установить 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' невидет
     
  6. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Писать оптимальный код
     
  7. ToniKapuchon

    ToniKapuchon Elder - Старейшина

    Joined:
    26 Feb 2006
    Messages:
    153
    Likes Received:
    45
    Reputations:
    -1
    конечно есть там решения типа уменьшения времени выполнения цикла путём добавление if-ов (выйгрыш составляет доли секунды), но я думаю тебе пока рано об етом думать!
     
    1 person likes this.
  8. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    if'ы ускоряют?! Вообще-то условные операторы очень медленные и надо писать линейный код.

    Подобный выигрыш находится примерно на уровне погрешностей и не является существенным
     
  9. jawbreaker

    jawbreaker Elder - Старейшина

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    Использовать оптимизацию компилятора. ИМХО для современных компиляторов нет разницы 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);
    }
    оптимизированный. Не думаю что разница будет очень уж заметна.
     
    #1529 jawbreaker, 7 Sep 2008
    Last edited: 7 Sep 2008
  10. jawbreaker

    jawbreaker Elder - Старейшина

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    iostream медленный. Используй сишные библиотеки, <cstdio>
    #include <cstdio>

    using namespace std;

    void main(){
    signed short i=0;
    while(i < 5000){
    printf("%d\n", i);
    i++
    }
    }
     
  11. FrMn

    FrMn Elder - Старейшина

    Joined:
    8 Aug 2008
    Messages:
    51
    Likes Received:
    16
    Reputations:
    7
    используй апи :)
    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);
        }
    }  
    
     
  12. _antony

    _antony Elder - Старейшина

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    strtok()
     
    #1532 _antony, 7 Sep 2008
    Last edited: 7 Sep 2008
  13. FrMn

    FrMn Elder - Старейшина

    Joined:
    8 Aug 2008
    Messages:
    51
    Likes Received:
    16
    Reputations:
    7
    http://msdn.microsoft.com/en-us/library/ms737591(VS.85).aspx
    http://msdn.microsoft.com/en-us/library/ms737593(VS.85).aspx
     
  14. 4y4o

    4y4o Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    40
    Likes Received:
    2
    Reputations:
    0
    как зделать чтобы программа печатала квадрат звёздочками заданого размера? типа если размер = 5 то квадрат (С++)

    * * * * *
    * *
    * *
    * *
    * * * * *

    ну типа тут квадрат ))
     
    #1534 4y4o, 8 Sep 2008
    Last edited: 8 Sep 2008
  15. M@X Dr.Akyla

    M@X Dr.Akyla Elder - Старейшина

    Joined:
    9 Apr 2008
    Messages:
    72
    Likes Received:
    44
    Reputations:
    0
    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 0qwertyi++)  
    {   
    for (
    int j 0qwertyj++)        
         {
    cout << "*";}  
    cout << "\n";    
    }  
    int r;  // что бы консоль не "убегала" :)
    cin >> r;  
    }  
     
    #1535 M@X Dr.Akyla, 8 Sep 2008
    Last edited: 8 Sep 2008
    2 people like this.
  16. ronald

    ronald Elder - Старейшина

    Joined:
    27 Mar 2008
    Messages:
    252
    Likes Received:
    42
    Reputations:
    6
    лучше
    #include <conio.h>


    getch() //в конце проги
    ЗЫ: йа такой вопрос, чтобы консол не убегала задавал)
     
  17. Smapt

    Smapt Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    ChaaK, покури "Крис Касперски. Самоучитель игры на WinSock" _http://kpnc.opennet.ru/sock.pdf там на русском очень подробно описан алгоритм работы сокетов.
     
    1 person likes this.
  18. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    пробую перехватить 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
     
  19. bons

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    возможно проблемы с выравниванием элементов структуры jmp_far
     
  20. procedure

    procedure Elder - Старейшина

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    Чуваки немного не могу разобраться в Visual Studio
    Вобщем как я прочитал есть несколько видов точек останова "переходить в режим останова немедленно" "переходить в режим останова в зависимости от условия" "переходить заданное число раз"
    Вот по условию есть там такая тема он переходит в режим останова в случае если условие true или если условие было изменено.
    Это как понять? В режиме вычисления условия или еще до вычисления или после вычисление если условие изменилось?))
     
Thread Status:
Not open for further replies.