Possible Duplicate:
How do I convert a double into a string in C++?
Convert double to string C++?
所有 C++ 和 Win32 新手都在这里玩 Visual Studio 2012 土地,所以请耐心等待,因为我有时会咬得太多:)
我有一个 Win32 应用程序,它只是使用 peekmessage 循环设置一个窗口以进行实时更新。该应用程序运行正常,窗口显示正常。我想将文本打印到窗口标题栏,显示我提供的时钟/计时器类的每秒帧数。
我还没有学习 GDI/GDI+ 或 Direct2D 和 DirectWrite 将文本和变量值输出到客户区,所以现在我需要一个简单的方法来将一些基本统计信息输出到窗口,我认为最简单的方法是在此阶段更新窗口标题。我的窗口类有一个采用 std::wstring 的 SetTitle 方法,所以我想知道如何最好地从文字文本和变量值(如 double)构建字符串?正如您可能猜测的那样,我也不熟悉基于控制台的应用程序的基本 std:cout 之外的字符串。
亚马逊告诉我我的圣物 'Book of Petzold, 5th Edition' 还有 3 天的时间所以任何提示都将不胜感激,你会在我的圣诞节今年的卡片列表。
谢谢。
在深入研究流输入和输出之后,我终于找到了一个似乎运行良好的解决方案。
包括<sstream>
之后在我的项目中,我创建了一个 std::wstringstream myString;
对象。
在我的应用程序的实时循环中,我有以下代码来格式化字符串和来自 Clock 类的值,然后我将其传递给 GDI 以打印到窗口客户区:
myString.clear(); // clear status bits
myString.str(L""); // Clear the string for reuse
myString << "FPS " << pGameClock->GetFrameRate();
TextOutW(GdiDeviceContext, x_pos, y_pos,
myString.str().c_str(),
myString.str().length());
在我的学习过程中,我快速绕过简单的 GDI 文本输出,因为我最初在使用 winapi SetWindowTextW
更新我的应用程序窗口标题属性时遇到了问题。功能。它似乎不喜欢在主循环中被高频调用,导致我的系统在运行程序时变得无响应,因此需要学习基本的 GDI 以输出到我的窗口客户区而不是窗口标题栏。
pGameClock->GetFrameRate();
顺便说一句,由才华横溢的 Noel Llopis 设计并在 Game Programming Gems 中介绍的高分辨率时钟和计时器类的实现提供4。 (感谢诺埃尔)。
我还发现,关于更高性能的字符串格式化和构建技术,还有很多东西需要学习,尤其是当应用于游戏中的实时要求时,但我怀疑我会更好地前往 http://gamedev.stackexchange.com (我最近才发现)需要进一步的问题和帮助?
帮助这个 C++ 菜鸟更好地理解输入和输出流的书籍:
- 使用 C++ 的编程原则和实践,Bjarne Stroustrup
- C++ for Everyone,第 2 版,作者:Cay Horstmann