Wyświetlam na konsoli zawartość pamięci bufora mem
oraz zapisuje do pliku. Użyłem funkcji spdlog::to_hex()
bo niestety w fmt nie znalazłem gotowca.
Na konsoli jest poprawnie. W pliku jest poprawnie tylko w niektórych edytorach. Problemem jest blednę zakończenie linii \r\r\n
Czy problem jest w tym ze mieszam fmt i spdlog ?
#include <vector>
#include <fstream>
#include <fmt/format.h>
#include <fmt/chrono.h>
#include <spdlog/common.h>
#include <spdlog/fmt/bin_to_hex.h>
int main()
{
//
std::vector <uint32_t> mem(0x5F);
std::string filename = fmt::format("_memory_map_{:%Y%m%d_%H%M%S}.txt", fmt::localtime(std::time(nullptr)) );
std::ofstream file(filename);
// display and write to file
auto print=[&](std::string &str)
{
fmt::print("{}",str);
file << str;// << std::endl;
};
uint32_t baseAdr = -1;
// "buf" temporary for to_hex
std::vector<char> buf(mem.size()*4);
std::memcpy(buf.data(),mem.data(),buf.size());
std::string str = fmt::format("[{:x}] mem[{:x}]{}\n", baseAdr, mem.size(), spdlog::to_hex(buf));
print(str);
// fill mem
for(auto &I:mem)
{
static uint32_t licznik{0};
I = licznik++;
}
std::memcpy(buf.data(),mem.data(),buf.size());
str = fmt::format("[{:x}] mem[{:x}]{}\n", baseAdr, mem.size(), spdlog::to_hex(buf));
print(str);
}
https://godbolt.org/z/PYo3Ys8fa
Czy na "godbolt" można zobaczyć wygenerowany plik który powstał po uruchomieniu aplikacji ?