У меня есть что-то вроде этого:
count++;
sprintf(buf, "%d", count);
char * wyn1 = " <span font='26'><b>buf</b></span>";
gtk_label_set_markup( GTK_LABEL( wynik1 ), wyn1 );
но это значение count
никогда не печатается в wyn1
,
Как напечатать значение buf
в wyn1
после этого конкретного формата?
<span font='26'><b>
= 19 символов
</b></span>
= 11 символов
'\0'
= 1 символ
и давайте скажем, что count
не потребует более 3 цифр. Тогда вы можете просто распечатать его прямо в wyn1
переменная в этом формате (buf
можно опустить):
char * wyn1 = malloc(19 + 3 + 11 + 1);
sprintf(wyn1, "<span font='26'><b>%3d</b></span>", count);
Но так как это на самом деле помечено как C ++, Вы должны просто использовать std::ostringstream
:
std::ostringstream os;
os << "<span font='26'><b>" << count << "</b></span>";
и после этого os.str().c_str()
будет использоваться так же, как wyn1
в предыдущем коде, но еще лучше, время жизни этой C-строки будет привязано к временной копии std::string
объект извлекается из потока, поэтому вам не нужно выполнять управление памятью самостоятельно.
Других решений пока нет …