我得到了相互矛盾的答案,我的代码怎么办?

时间:2011-08-12 13:47:29

标签: c++ text directx

我正在使用C ++和DirectX制作RPG游戏。

我将游戏的所有数据存储在.txt文件中,并使用`ifstream / ofstream读/写它。到目前为止,在谈论生物统计数据时,这对我来说效果很好,而且我对生物名称进行了一次黑客攻击,但这已成为一个问题。

我可以在txt文件中存储字符串并读取它们但我无法使用它们。对于单个单词我有一个黑客,但现在我在故事情节中,人物互相交谈这是一个真正的问题。

我在gamedevelopment.stackexchange上询问如何在屏幕上放置文本并被告知使用D3Dtext但是只接受C风格的字符串而我只能从文本文件中读取C ++字符串。这是一个如此大的问题,因为我愿意回过头来重新考虑需要坐的东西,因为在分类之前不能取得任何进展。

所以现在我有一堆问题,我不知道先问哪个:

  1. 我想要一种方法来绘制像图形一样的字母。我被告知这是D3Dtext的作用,但我想实现它自己,如果可以,我只需要有关如果有人知道的信息?

  2. 如果我要像所谓的专家那样使用D3Dtext,我必须使用C风格的字符串。那么如何将C风格的字符串转换为C ++字符串呢?我现在有一个方法但是每个字符串都需要new和delete运算符,我可以看到它是一个大问题,因为它的复杂性增加了吗?

  3. 有没有办法阅读C风格的字符串?也许是ifstream的替代品。我想保留txt文件,因为我真的不想使用xml,但如果它是一个可行的解决方案我可以更改文件格式吗?

  4. 过早优化我知道但是我计划对游戏中的每一段文字使用相同的功能,所以在速度方面这样做的好方法是什么(为什么我不希望每个新的/删除字符串)?

  5. 我很乐意提供帮助我所需的任何信息,请问。

3 个答案:

答案 0 :(得分:3)

std::string mystr = "Hello World.";
mystr.c_str(); // gets a null terminated const char* C-style string

如果您需要按上述方式访问c字符串,请按原样读取您的文件。

答案 1 :(得分:1)

2)使用c_str()方法将C ++字符串传递给D3Dtext

some_D3Dtext_function(some_text.c_str())

3和4然后变成非问题。

答案 2 :(得分:1)

您可以在C风格的字符串和C ++的std::string之间自由转换。只需使用my_cpp_string.c_str()来获取C ++字符串的C字符串表示,并使用std::string my_cpp_string(my_c_string)从C样式字符串初始化新的std :: string。