我有这样的事情:
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
我有这样的事情:
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
从流中检索到的对象的临时副本相关联,因此您不需要对您的内存进行内存管理自己的。