Muszę grupować wektory 5unsigned char
(data_length=5
). Na końcu grupy chcę dodać grupę ID i zapisać je (dane grupy + jej identyfikator) do pliku. W którym typie grupy jest ID integer
. Wykonuję to zadanie jak poniżej kod. Czy to jest poprawne? mieszek rysunek pokazuje co BioręJak mogę zapisać wektor <unsigned char> do pliku, a następnie unsigned int
#define random(x) (rand()%x)
std::ofstream filewrite("abc.raw", std::ios::out | std::ofstream::binary);
unsigned int iter = 0;
unsigned int data_length=5;
unsigned int ID_data=0;
//-------------Write data-------------//
while (iter<10){
vector<unsigned char> vec_data;
for (unsigned int i=0;i<data_length;i++){
vec_data.push_back(random(256))
}
std::copy(vec_data.begin(), vec_data.end(), std::ostreambuf_iterator<char>(filewrite));
//Write ID_data after vec_data
filewrite.write(reinterpret_cast<const char *>(&ID_data), sizeof(ID_data));
ID_data++;
iter++;
}
filewrite.close();
W dodatkami, chcę, aby wyodrębnić dane bez wektor ID grupy. To jest mój kod do wyodrębniania danych z powyższego pliku, ale nie usuwa on grupy ID. Czy możesz mi pomóc go usunąć?
//-------------Read data-------------//
std::ifstream file("abc.raw", std::ios::binary);
// Stop eating new lines in binary mode!!!
file.unsetf(std::ios::skipws);
// get its size:
std::streampos fileSize;
file.seekg(0, std::ios::end);
fileSize = file.tellg();
file.seekg(0, std::ios::beg);
// reserve capacity
std::vector<unsigned char> vec;
vec.insert(vec.begin(),
std::istream_iterator<unsigned char>(file),
std::istream_iterator<unsigned char>());
Jeśli ten kod działa, to chyba należy poprosić go w sekcji Code Review. –
Zamiast podawać interpretację tego, co dzieje się nie tak, należy przedstawić obserwacje. Twoje pytanie jest niejasne. –
@MehrdadMomeny W pierwszej połowie pytanie nie jest jasne, czy to działa, czy nie. Druga część jest zdecydowanie ** nie ** działa zgodnie z przeznaczeniem, więc [codereview.se] byłoby niewłaściwe w tej chwili. Ponadto nie jesteśmy "sekcją": p – Kaz