Jak wczytac wektor z pliku binarnego?

0
 int n;
	 vector <int> newVertexArray;
	 for (int i = 0; i < 3; i++) {
		 cin >> n;
		 newVertexArray.push_back(n);
	}
	 ofstream writeFile;
	 writeFile.open("nazwa.dat", std::ios::out | std::ios::binary);
	 if (!newVertexArray.empty())
		 writeFile.write((char*)&newVertexArray[0], newVertexArray.size() * sizeof(int));

mam plik binarny do ktorego zapisalem dane z wektora w nastepujący sposob. Jak odczytac te dane z pliku?

0

mam plik binarny do ktorego zapisalem dane z wektora w nastepujący sposob. Jak odczytac te dane z pliku?

Zapisałeś wartość pierwszego elementu (int) w bloku danych o długości (int * 3).

.

for(auto const& el : newVertexArray){
   writeFile.write((char*)&el, sizeof(el));
} 

i teraz można to odczytać odwrotnie

int val;
vector<int> valuesFromFile;
for(size_t i{}; i < 3; ++i){
   readFile.read((char*)& val, sizeof(val));
   valuesFromFile.push_back(val);
} 

Coś w ten deseń.
https://4programmers.net/Pastebin/8177

2
  std::ifstream is ("test.txt", std::ifstream::binary);
  if (is) {
    // get length of file:
    is.seekg (0, is.end);
    int length = is.tellg();
    is.seekg (0, is.beg);

    vector <int> newVertexArray;

    newVertexArray.resize(length / sizeof(int);
    is.read(reinterpret_cast<char *>(newVertexArray.data()), 
            newVertexArray.size() * sizeof(int));

    is.close();
  }

Ale bądź świadom, że w tym kodzie jest undefined behavior.

1 użytkowników online, w tym zalogowanych: 0, gości: 1