2013-03-29 44 views
-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

如何将buf的值打印为wyn1以下特定格式?

+0

欢迎来到SO。我编辑了你的问题,因为它处于糟糕的状态(这就是为什么你会收到一些用户的反对票)。请阅读[常见问题](http://stackoverflow.com/faq)和[关于页面](http://stackoverflow.com/about)以避免将来出现这种情况:) – LihO

回答

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对象的临时副本相关联,因此您不需要执行内存m管理你自己。

+0

@ user2141238:检查我的第一个修订:http://stackoverflow.com/revisions/15702421/1 – LihO

相关问题