-5

我有这样的事情:

 count++;
 sprintf(buf, "%d", count);
 char * wyn1 = " <span font='26'><b>buf</b></span>";
 gtk_label_set_markup( GTK_LABEL( wynik1 ), wyn1 );

但它的值count永远不会打印到wyn1.

如何按照这种特定格式打印值bufwyn1

4

1 回答 1

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);

但由于这实际上被标记为,你应该简单地使用std::ostringstream

std::ostringstream os;
os << "<span font='26'><b>" << count << "</b></span>";

之后os.str().c_str()就可以像wyn1以前的代码一样使用了,但更好的是,这个 C 字符串的生命周期将与std::string从流中检索到的对象的临时副本相关联,因此您不需要对您的内存进行内存管理自己的。

于 2013-03-29T11:37:18.570 回答