VS2017:无法添加字符串/字符串

时间:2018-06-25 17:52:40

标签: c++ visual-c++

我很难理解以下代码为何不执行应做的工作,VS2017未显示错误并创建了解决方案,但字符串永远都不应该是这样:

void COrion::AddJournalMessage(CTextData *msg, const string &name)
{
    WISPFUN_DEBUG("c194_f101");
    CTextData *jmsg = new CTextData(msg);

    jmsg->Text = name + jmsg->Text;
}

jmsg->文本为std :: string。

现在在运行时,我们说“名称”是“ Player:”,“ jmsg-> Text”是“ Hello World”,我希望代码后的文本是“ Player:Hello World”,但不是。只是“玩家:”而我不明白为什么。

我找到了一种解决方法:

jmsg->Text = name.c_str() + jmsg->Text;

此更改为“ Player:Hello World”。

问题是,我仍然不明白为什么第一个不起作用。 有人可以解释问题出在哪里吗? 是VS特有的吗?

清楚地说:这是我想使用的开源项目,而不是我自己编写的代码,但是问题是许多bug的根源,因为大量使用了这种方法。

编辑 CTextData类:

class CTextData : public CRenderTextObject
{
public:
    bool Unicode = false;
    TEXT_TYPE Type = TT_CLIENT;
    uchar Font = 0;
    uint Timer = 0;
    uint MoveTimer = 0;
    string Text = "";
    wstring UnicodeText = L"";
    uchar Alpha = 0xFF;
    CRenderWorldObject *Owner = NULL;
    CTextData();
    CTextData(CTextData *obj);
    virtual ~CTextData();

    virtual bool IsText() { return true; }

    bool CanBeDrawedInJournalGump();

    CGLTextTexture m_Texture;

    void GenerateTexture(
        int maxWidth,
        ushort flags = 0,
        TEXT_ALIGN_TYPE align = TS_LEFT,
        uchar cell = 30,
        int font = -1);
};

0 个答案:

没有答案