-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

4

1 に答える 1

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、ストリームから取得されたオブジェクトの一時コピーに関連付けられるため、自分でメモリ管理を行う必要はありません。自分の。

于 2013-03-29T11:37:18.570 に答える