Tôi có vô số lớp C++ đọc dữ liệu từ luồng tệp. Các chức năng trông như thế này.C++ chuyển đổi chức năng truyền tệp để sử dụng chuỗi
bool LoadFromFile(class ifstream &file);
Tôi đang tạo chức năng mới để đọc từ bộ nhớ thay vì tệp. Vì vậy, tôi googled xung quanh và một istringstream dường như làm các trick mà không có bất kỳ sửa đổi mã.
bool LoadFromData(class istringstream &file);
Bây giờ câu hỏi của tôi là. Tôi cần phải xây dựng dòng này để đọc từ một mảng char. Chuỗi không phải là null-chấm dứt, đó là dữ liệu nhị phân thuần túy và tôi có một số nguyên với kích thước. Tôi đã thử gán nó vào một chuỗi và tạo một luồng từ một chuỗi, tuy nhiên chuỗi kết thúc sau một ký tự null .. và dữ liệu được sao chép.
int size;
char *data;
string s = *data;
Làm cách nào để tạo chuỗi từ con trỏ mảng char mà không sao chép dữ liệu + chỉ định kích thước dữ liệu con trỏ? Bạn có biết bất kỳ giải pháp nào khác ngoài chuỗi không?
Vì vậy, làm rõ: Vấn đề của bạn là 'char *' không bị chấm dứt và do đó bạn gặp sự cố khi tạo chuỗi 'std :: string'? – quasiverse
Yea đó là vấn đề cơ bản. Tôi cũng tự hỏi nếu có ai biết một giải pháp tốt hơn. – Tito
Đây có thể là giải pháp: http://stackoverflow.com/questions/2079912/simpler-way-to-create-ac-memorystream-from-char-size-t-without-copying-th (một phiên bản sử dụng tăng cường, trên bản sao dữ liệu và chỉ hoạt động với gcc) –