Tôi sắp xếp chức năng ổ cắm không gian người dùng Linux trong một số C++ cho một hệ thống nhúng (có, đây có thể là phát minh lại bánh xe lần nữa).Sử dụng read() trực tiếp vào C++ std: vector
Tôi muốn cung cấp tính năng đọc và ghi bằng cách sử dụng vectơ.
Làm việc viết khá dễ dàng, tôi chỉ có thể vượt qua &myvec[0]
và tránh sao chép không cần thiết. Tôi muốn làm như vậy và đọc trực tiếp vào một véc tơ, thay vì đọc vào một bộ đệm char sau đó sao chép tất cả vào một vectơ mới được tạo ra.
Bây giờ, tôi biết số lượng dữ liệu tôi muốn đọc và tôi có thể phân bổ một cách thích hợp (vec.reserve()
). Tôi cũng có thể đọc vào &myvec[0]
, mặc dù đây có thể là một IDEA VERY BAD. Rõ ràng làm điều này không cho phép myvec.size trả lại bất cứ điều gì hợp lý. Có cách nào để làm điều này rằng:
- Không hoàn toàn cảm thấy chút kinh ngạc từ một an toàn/C++ quan điểm
- Không liên quan đến hai bản sao của khối dữ liệu - một lần từ hạt nhân để không gian sử dụng và một lần từ một bộ đệm kiểu C
char *
thành một vector C++.
Một vectơ về cái gì? –
Một vectơ của ký tự (tốt, byte)! – Joe
Bạn có thể muốn sử dụng 'uint8_t' hoặc' unsigned char' cho byte. – tzaman