2013-08-26 2 views
0

В этом цикле cin.get(); пропускается каждый раз. Я понятия не имею, почему это пропущено. Любая помощь будет принята с благодарностью.C++ for loop skips cin.get()

Код:

for(Pointer = StartPointer; Pointer < EndPointer; Pointer += MemInfo.RegionSize) 
{ 

    VirtualQueryEx(hProc, (LPCVOID)(Pointer), &MemInfo, sizeof(MemInfo)); 
    cout << "MemInfo AllocationBase: " << MemInfo.AllocationBase << endl; 
    cout << "MemInfo AllocationProtect: " << MemInfo.AllocationProtect << endl; 
    cout << "MemInfo BaseAddress: " << MemInfo.BaseAddress << endl; 
    cout << "MemInfo Protect: " << MemInfo.Protect << endl; 
    cout << "MemInfo RegoinSize: " << MemInfo.RegionSize << endl; 
    cout << "MemInfo State: " << MemInfo.State << endl; 
    cout << "MemInfo Type: " << MemInfo.Type << endl; 
    cout << "MemInfo Size: " << sizeof(MemInfo) << endl; 
    cout << "Starter pointer is: " << StartPointer << endl; 
    cin.get(); 
} 

Пример вывода между cin.get();

MemInfo AllocationBase: 00000000 
MemInfo AllocationProtect: 0 
MemInfo BaseAddress: 00000000 
MemInfo Protect: 1 
MemInfo RegoinSize: 65536 
MemInfo State: 65536 
MemInfo Type: 0 
MemInfo Size: 28 
Starter pointer is: 0 
MemInfo AllocationBase: 00010000 
MemInfo AllocationProtect: 4 
MemInfo BaseAddress: 00010000 
MemInfo Protect: 4 
MemInfo RegoinSize: 65536 
MemInfo State: 4096 
MemInfo Type: 262144 
MemInfo Size: 28 
Starter pointer is: 0 
+0

В любое время? Что вы входите? –

+0

Это может объяснить вашу проблему. Он читает ваши новые строки? http://stackoverflow.com/questions/2012268/cin-get-and-omitting-newline-char – dcaswell

+0

Вы попадаете в систему, использующую «\ r \ n», поскольку это разделитель строки новой строки? – KitsuneYMG

ответ

2

cin.get() не получает '\n' вы набрали ~

попробовать использовать,

string str; 
getline(cin, str) 

вместо cin.get()

или добавить getchar() после cin.get()

+0

getline (cin, str) Отлично работает! Мне пришлось добавить #include user908759

0

Sinc е вы на Windows:

#include <conio.h> 

// .. your other stuff 

_getch(); 

cin.get() собирается захватить все, что находится в буфере ввода (и если вы нажали войти или пространство, или в значительной степени дышало на клавиатуре, это будет что-то), или EOF если ничего, поэтому он всегда будет возвращаться.