user908759
user908759

Reputation: 1355

C++ for loop skips cin.get()

In this for loop the cin.get(); is being skipped every other time. I have no idea why it is being skipped. Any help would be greatly appreciated.

Code:

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();
}

Example output between 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

Upvotes: 0

Views: 217

Answers (2)

Zac Howland
Zac Howland

Reputation: 15870

Since you are on Windows:

#include <conio.h>

// .. your other stuff

_getch();

cin.get() is going to grab whatever is in the input buffer (and if you pressed enter, or space, or pretty much breathed on the keyboard, it will have something), or the EOF if there is nothing, so it will always return.

Upvotes: 0

zhenjie
zhenjie

Reputation: 133

cin.get() doesn't get the '\n' you typed~

try to use,

string str;
getline(cin, str) 

instead of cin.get()

or add a getchar() after cin.get()

Upvotes: 2

Related Questions