vector в c++. Метод size() возвращает неверное значение
Добавлено: 17 авг 2014, 18:57
Всем добрый день. Пытаюсь сделать чтение данных из ком-порта. Вместо обычного массива использую vector. Все работает, данные записываются и читаются из вектора, но я не могу узнать его размер, потому что метод size() возвращает всегда то значение, которое было задано при его создании. Например: vector <char> data(5). Метод data.size() всегда возвращает 5, даже если реально в векторе больше элементов. Использую CodeBlocks, компилятор MinGW32 4.8.1. Функция работает в отдельном потоке.
Подскажите, в чем может быть проблема?
Подскажите, в чем может быть проблема?
Код: Выделить всё
void ReadCOM()
{
DWORD receive_size;
DWORD number_bytes;
DWORD mask;
DWORD port_status;
DWORD errors;
vector <unsigned char> received_data(5);
COMSTAT comstat;
overlapped_read.hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
SetCommMask(serial_handle, EV_RXCHAR);
while (1)
{
WaitCommEvent(serial_handle, &mask, &overlapped_read);
port_status = WaitForSingleObject(overlapped_read.hEvent, INFINITE);
if(port_status==WAIT_OBJECT_0)
{
ClearCommError(serial_handle, &errors, &comstat);
number_bytes = comstat.cbInQue;
cout << "-------" << received_data.size() << "--------" << endl;
ReadFile(serial_handle, &received_data[0], number_bytes, &receive_size, &overlapped_read);
for(unsigned int i=0; i<number_bytes; i++)
{
cout << received_data[i];
}
cout << endl;
}
}
}