在Windows C ++中打印文本和变量

时间:2012-07-29 02:10:37

标签: c++ windows text printing

我目前正在开发基于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 );

但这不起作用。那么我该如何正确实现呢?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

std::string个对象支持operator+

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

(你可以找到itostr here

当然,可以使用宽字符和std::wstring来执行此操作,但对于此示例,坚持使用ASCII是最简单的。

答案 2 :(得分:0)

你不会更好地使用" int"而不是"字符串"看看字符串是如何被男性用来存储文本的? 对于例如 你可以使用:     int age = 30;