如何将数字打印到具有特定格式的字符串中间?

时间:2013-03-29 11:29:31

标签: c++ string string-formatting c-strings

我有这样的事情:

 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

1 个答案:

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

但由于这实际上标记为,因此您只需使用std::ostringstream

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

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