我有这样的事情:
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
?
答案 0 :(得分:1)
<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
对象的临时副本从流中检索,因此您不需要自己进行内存管理。