Помогите с cairo c++. Не могу понять как выводить число

Все гуд. Все рисует, пишет (букАвы), но вот цифри не хочет выводить ругается на тип float, а мне требуется именно с типом float (string не подходит). Пока выдумал все перенести в массив типа char, но может кто то знает альтернативу получше. Пример кода:

#include <cairo/cairo.h>
#include <cairo/cairo-pdf.h>
#define PDFFILE "cairotst.pdf"
int main(void) 
{
cairo_surface_t *surface;
cairo_t *cr;
cairo_text_extents_t te;

    surface = cairo_pdf_surface_create(PDFFILE, 1400, 1000);
    cr = cairo_create(surface);
    cairo_set_source_rgb(cr, 0, 0, 0);
    cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);
    cairo_set_font_size (cr, t_font);
    cairo_set_line_width(cr, 0.5);


float T     = 36.6; 

int y   = 40;
int x   = 120;

char buffer[20];
  sprintf(buffer, "%.2f", T);

cairo_text_extents(cr, tab[0], &te);
cairo_move_to(cr, x + 15, y + 330);
cairo_show_text(cr, T);
cairo_stroke(cr);

     cairo_show_page(cr);

    cairo_surface_destroy(surface);
    cairo_destroy(cr);


return 0;
}


Ответы (1 шт):

Автор решения: Alexey Vesker

Прототип функции выглядит так:

void cairo_show_text (cairo_t *cr, const char *utf8);

Т.е. второй параметр это указатель на маcсив символов и float вы туда не сможете передать при всем желании. Чтобы у вас все корректно работало сначала переведите float в строку и уже потом передавайте в качестве аргумента в функцию, например, так:

cairo_show_text(cr, std::to_string(T).c_str());
→ Ссылка