Пакет fmtlib обеспечивает чистый, читаемый и быстрый способ форматирования строковых данных в C ++, но я не могу найти чистый и читаемый способ использовать его для добавления последовательности данных в строку.
После долгих поисков я придумал рабочее решение, но оно гораздо более многословно, чем использование стандартного подхода потоков std и шевронов. Я не могу привести ни одного / многих примеров этого с использованием fmtlib, поэтому я надеюсь, что какой-нибудь эксперт знает, как сделать это более аккуратно.
// Here is an fmtlib version of dump_line. I don't like it. using 'cout' seems cleaner and simpler.
virtual void dump_line( const char* msg, uint8_t* dataline )
{
fmt::memory_buffer out;
format_to(out, "{} :", msg);
for( int jj=0; jj<m_cacheStore.p_LineSize; jj++) {
format_to(out, " [{}]={}", jj, (int)dataline[jj] );
}
fmt::print("{}\n",fmt::to_string(out) );
}
// Here is the typical approach using cout and chevrons.
// Nice and simple.
virtual void dump_line( const char* msg, uint8_t* dataline )
{
cout << msg << " : " ;
for( int jj=0; jj<m_cacheStore.p_LineSize; jj++)
cout << " [" << jj << "]=" << (int)dataline[jj];
cout<<endl;
}
Я просто вывожу массив int в stdout, чтобы он выглядел так:
[0] = 2 [1] = 0 [2] = 0 [3] = 0 [4] = 1 [5] = 0 [6] = 0 [7] = 0