如何使用DirectX9在屏幕上绘制变量的值?我知道我可以使用DrawText()方法来绘制这样的文字:
m_pD3DFont->DrawText(0, "text", -1, &rect, DT_TOP | DT_RIGHT | DT_NOCLIP, D3DCOLOR_ARGB(255, 255, 255, 255));
但是如何让它绘制变量的值呢?特别是整数。我已经尝试将整数转换为字符串,但后来我收到错误
无法将参数2从'std :: string *'转换为'LPCWSTR'
感谢任何帮助。
答案 0 :(得分:0)
要将整数转换为字符串,将字符串转换为整数等,您可以使用std::stringstream
之类的
std::stringstream ss;
std::string s = "123";
ss << s;
int result;
ss >> result;
此处提供更多信息http://cplusplus.com/reference/iostream/stringstream/
如果您的应用需要Unicode字符串,则可以使用std::wstringstream
和std::wstring
。
答案 1 :(得分:0)
正如之前的海报所提到的,你可以使用字符串流将int转换为字符串,反之亦然,但是使用C ++ 11时,有一些新功能可以消除这种需要。您可以使用std :: to_string或std :: to_wstring将int转换为字符串或wstrings,并且可以使用c_str()从字符串对象中获取原始char *或wchar_t *。您应该能够将适当类型的指针转换为winapi字符串,但有些可能取决于编译器的设置。
供您参考,这是winapi字符串的含义:
LPSTR = char*
LPCSTR = const char*
LPWSTR = wchar_t*
LPCWSTR = const wchar_t*
LPTSTR = char* or wchar_t* depending on _UNICODE
LPCTSTR = const char* or const wchar_t* depending on _UNICODE
以下是如何将它们分配给C ++字符串的快速示例:
#include <iostream>
#include <string>
#include <Windows.h>
#include <tchar.h>
int main()
{
// Declare winapi strings
LPSTR str_charPtr;
LPCSTR str_constCharPtr;
LPWSTR str_wcharPtr;
LPCWSTR str_constWcharPtr;
LPTSTR str_tcharPtr;
LPCTSTR str_constTcharPtr;
// Declare a test integer
int num = 5001;
// Convert the integer to a string and to a wstring
std::string regString = std::to_string(num);
std::wstring wideString = std::to_wstring(num);
// Attempt to assign the winapi strings to the C++ standard strings
str_charPtr = const_cast<char*>(regString.c_str()); // NOTE: removing const to store in non-const LPSTR
str_constCharPtr = regString.c_str();
str_wcharPtr = const_cast<wchar_t*>(wideString.c_str()); // NOTE: removing const to store in non-cost LPWSTR
str_constWcharPtr = wideString.c_str();
str_tcharPtr = const_cast<TCHAR*>(regString.c_str()); // Error if set to Unicode
str_tcharPtr = const_cast<TCHAR*>(wideString.c_str()); // Error if NOT set to Unicode
str_constTcharPtr = regString.c_str(); // Error if set to Unicode
str_constTcharPtr = wideString.c_str(); // Error if NOT set to Unicde
return 0;
}
如果您现在已经转到Visual Studio 2012,则可以像这样调整设置:
1.右键单击解决方案资源管理器中的项目
2.单击“属性”
3.在“配置属性”下的左窗格中,选择“常规”
4.在右侧窗格中,查看“项目默认值”部分
5.在“字符集”旁边,选择“Unicode”或适合您的任何选项。