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

字符串文字只是指针,您不能将它们加在一起。

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 回答
0

看看字符串是如何被人为地用来存储文本的,使用“int”而不是“string”不是更好吗?例如,您可以使用: int age = 30;

于 2014-07-25T15:57:32.247 回答