我有這樣的事情:如何將數字打印到具有特定格式的字符串中間?
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
對象的臨時副本相關聯,因此您不需要執行內存m管理你自己。
@ user2141238:檢查我的第一個修訂:http://stackoverflow.com/revisions/15702421/1 – LihO
歡迎來到SO。我編輯了你的問題,因爲它處於糟糕的狀態(這就是爲什麼你會收到一些用戶的反對票)。請閱讀[常見問題](http://stackoverflow.com/faq)和[關於頁面](http://stackoverflow.com/about)以避免將來出現這種情況:) – LihO