Tôi đã cố gắng tạo vòng lặp for lặp lại dựa trên độ dài của gói mạng. Trong API có tồn tại một biến (size_t) bởi event.packet-> dataLength. Tôi muốn lặp lại từ 0 đến event.packet-> dataLength - 7 tăng i 10 mỗi lần nó lặp lại nhưng tôi đang có một thế giới rắc rối.Chuyển đổi size_t thành số nguyên (C++)
Tôi đã tìm giải pháp nhưng không thể tìm thấy bất kỳ điều gì hữu ích. Tôi đã cố gắng chuyển đổi size_t đến một int unsigned và làm số học với điều đó nhưng tiếc là nó không hoạt động. Về cơ bản tất cả những gì tôi muốn là:
for (int i = 0; i < event.packet->dataLength - 7; i+=10) { }
Mặc dù mỗi lần tôi làm điều này hoặc cố gắng chuyển đổi, tôi < # part là một số lượng lớn. Họ đã đưa ra một tuyên bố printf trong một hướng dẫn cho API mà sử dụng "% u" để in số thực tế tuy nhiên khi tôi chuyển đổi nó thành một unsigned int nó vẫn không chính xác. Tôi không chắc phải đi đâu từ đây. Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao :)
Hãy suy nghĩ về nó: Giá trị của 'static_cast (- 1)' là gì? Điều gì sẽ xảy ra khi 'event.packet-> dataLength' nhỏ hơn 7? –
genpfault
Tại sao không thể 'tôi' là' size_t'? Ngoài ra, trừ khi chiều dài luôn luôn bằng 7 mod 10, đây là một vòng lặp rất đặc biệt để cố gắng. – OrangeDog
Bạn có cố gắng truyền 'event.packet-> dataLength' sang' int' không? – Dawson