2013-03-29 48 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

相關問題