0

私は現在、Windows ベースの C++ プログラムに取り組んでいます。私はコンソール アプリケーションの作業/コーディングに慣れているため、やろうとしていることの多くの構文に慣れていません。そのため、後でさらに多くの質問をする可能性があります。

今のところ、テキストを印刷して、テキスト内に変数を表示したいと考えています。たとえば、「私は X 歳です」と X = 30 を出力したい場合、その構文はどのように形成されますか?

私はこれが機能することを知っています:

DrawText(hDC,L"I am X years old",-1,&rect,DT_CENTER | DT_WORDBREAK );

私がやりたいことは次のとおりです。

DrawText(hDC,L"I am "+ X +" years old",-1,&rect,DT_CENTER | DT_WORDBREAK );

しかし、これはうまくいきません。では、どうすればそれを正しく実装できますか?

4

3 に答える 3

2

C++ は Javascript などのような型のない言語ではないため、パーツを一緒に追加してそのような文字列を作成することはできません。代わりに、swprintf_s などの関数を使用して自分で文字列を作成する必要があります。例えば、

wchar_t wchBuf[128];
swprintf_s(wchBuf, _countof(wchBuf), L"I am %ld years old", X);
DrawText(hDC, wchBuf, -1, &rect, DT_CENTER | DT_WORDBREAK);
于 2012-07-29T02:33:17.227 に答える
0

テキストを格納するために文字列がどのように使われているかを見て、「string」の代わりに「int」を使用したほうがよいのではないでしょうか? たとえば、次のように使用できます。 int age = 30;

于 2014-07-25T15:57:32.247 に答える
0

文字列リテラルは単なるポインターであり、それらを一緒に追加することはできません。

しかし、std::stringオブジェクトはoperator+.

DrawTextA(hDC,("I am " + itostr(X) + " years old").c_str(),-1,&rect,DT_CENTER | DT_WORDBREAK );

itostr(ここで見つけることができます)

もちろん、ワイド文字とstd::wstringでこれを行うことは可能ですが、この例では ASCII に固執するのが最も簡単です。

于 2012-07-29T02:49:41.283 に答える