【问题标题】:std::wstring sFile in javajava中的std::wstring sFile
【发布时间】:2019-12-11 20:34:33
【问题描述】:

我正在用 java 制作游戏,我想使用一个用 c++ 编码的引擎 (olcConsoleGameEngine),但我想用 java 制作它。我可以理解 c++ 的大部分编码方式,但我被困在特定的行 (198):olcSprite(std::wstring sFile)

class olcSprite
{
public:
    olcSprite()
    {

    }

    olcSprite(int w, int h)
    {
        Create(w, h);
    }

    olcSprite(std::wstring sFile)     // line 198
    {
        if (!Load(sFile))
            Create(8, 8);
    }

    //...

我查了一下,发现std::function是根据https://en.cppreference.com/w/cpp/utility/functional/function的“通用多态函数包装器”。但我不确定这意味着什么或如何在java中专门为我的案例实现等价物。如果有人可以帮助我更好地理解这一点或为我指明正确的方向,我将不胜感激。

【问题讨论】:

  • 我可以理解 c++ 的大部分编码方式——我建议你真正了解 C++。试图逐行找出像 C++ 这样复杂的语言,很少(如果有的话)是正确的。
  • wstring 不只是 UTF8 Unicode 吗?两字节字符串而不是单字节字符。 Java 字符串默认是 Unicode,所以一切就绪。
  • 我看不出第 198 行与 std::function 有什么关系?
  • @duffymo 很难说。 std::wstring 通常用于 Windows 中的 UTF-16LE 编码字符串。如果需要一些互操作性,应该注意一些 - 但是如果翻译后的游戏引擎要独立运行,我猜java使用什么编码都没有关系,就像你说的那样。
  • std::wstring 使用wchar_t,在 Windows 上为 2 字节 (UCS-2/UTF-16),但在其他平台上为 4 字节 (UCS-4/UTF-32)。

标签: java c++ polymorphism game-engine wrapper


【解决方案1】:

当您查看here 时,您会发现:

std::wstring
typedef basic_string<wchar_t> wstring;
Wide string
String class for wide characters.

换句话说:这是一个简单地接受字符串的构造函数,该字符串代表一个文件名,然后用于执行文件系统的工作。

这里唯一“特殊”的东西,它是一个带有“宽字符”的字符串,参见there

您的代码都没有使用 std::function。这就是全部,这是olcSprite 类的构造函数,它可能从磁盘读取“精灵”的字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2014-06-21
    相关资源
    最近更新 更多