fork(1) download
  1. #include <algorithm>
  2. #include <chrono>
  3. #include <iostream>
  4. #include <fstream>
  5. #include <vector>
  6. #include <cmath>
  7. #include <cstring>
  8. #include <numeric>
  9.  
  10.  
  11. struct my_data {
  12. uint32_t some_value;
  13. std::vector<uint32_t> some_vector;
  14.  
  15. my_data (uint32_t v, std::vector<uint32_t> vec) :
  16. some_value(v), some_vector(std::move(vec)) {};
  17. };
  18.  
  19.  
  20.  
  21. int main() {
  22.  
  23. std::vector<my_data> all_data;
  24. for (size_t i = 0; i < 10; ++i) {
  25. std::vector<uint32_t> temp = {1, 2, 3, 4, 5};
  26. uint32_t x = 3;
  27. all_data.emplace_back(x, temp);
  28. }
  29.  
  30. // Now write it to file, two ways...
  31. std::ofstream out("tmp", std::ofstream::binary);
  32. for (size_t i = 0; i < 10; ++i) {
  33. // Works OK
  34. out.write((char *)all_data[i].some_vector.data(), all_data[i].some_vector.size() * sizeof(uint32_t));
  35.  
  36. // Does not work, gives garbage values
  37. out.write((char *)&all_data[i].some_vector[0], all_data[i].some_vector.size() * sizeof(uint32_t));
  38.  
  39. }
  40.  
  41. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty