WriteConsoleA bufor

0

Cześć,
Muszę użyć funkcji ReadConsole:

BOOL WINAPI ReadConsole(
  _In_      HANDLE hConsoleInput,
  _Out_     LPVOID lpBuffer,
  _In_      DWORD nNumberOfCharsToRead,
  _Out_     LPDWORD lpNumberOfCharsRead,
  _In_opt_  LPVOID pInputControl
);

I zastanawiam się jak jej użyć do mojego celu... przyjmuje bufor na tekst do wczytania, który musi być pointerem... Mogę dać tam pointer na std::string? Następnie liczbę znaków, która ma zostać wczytana i tu zaczyna się problem. Co tam wstawić? Zakładam, że musi się dać ustawić tę liczbę jakoś w zależności od długości stringa, ale jak?

0

Czytasz konsolę "aż nie przeczytasz wszystkiego"

bool readConsole(std::string& console_out, HANDLE hConsole)
{
  int read; // ile przeczytano z bufora
  char buffer[128];
  do
  {
    if(ReadConsole(hConsole, buffer, 127, &read, NULL) == FALSE) return false; // czytaj 127 znaków
    buffer[read] = 0; // dodaj znak kończący C stringa po przeczytanych znakach
    console_out += buffer; // dodaj przeczytany ciąg do C++ stringa
  }
  while(read >= 127); // czytaj dopóki zapełnia cały bufor
  return true;
}

std::string str;
readConsole(str, hConsole);

1 użytkowników online, w tym zalogowanych: 0, gości: 1