gpt4 book ai didi

c++ - 使用字符串断言 BSTR

转载 作者:行者123 更新时间:2023-11-30 03:48:43 27 4
gpt4 key购买 nike

我有一个测试函数如下:

    [TestMethod]
void RipMichaelJacksonTest()
{
string expected = "Hello";
BSTR actual = SysAllocString(L"Hello");
Assert::AreEqual(expected, actual);
}

assert 部分当然会失败。

有没有我可以使用的断言函数?我是 VC++ 的新手。

最佳答案

问题是你正在做 AreEqual .传入两个参数会强制AreEqual(Object^, Object^)其中:

Verifies that two specified objects are equal. The assertion fails if the objects are not equal.

您实际上要查找的是 wchar*char* 的比较。两者之间没有直接比较函数,因此需要将 string 转换为 wstring。有很多关于如何做到这一点的例子,例如:https://stackoverflow.com/a/7159944/2642059你需要做类似的事情,例如:

wstring get_wstring(const string& s) {
wstring buf;
const char* cs = s.c_str();
const size_t wn = mbsrtowcs(nullptr, &cs, 0, nullptr);

if (wn == string::npos) {
cout << "Error in mbsrtowcs(): " << errno << endl;
} else {
buf.resize(wn + 1);

if(mbsrtowcs(&*buf.begin(), &cs, wn + 1, nullptr) == string::npos) {
cout << "Error in mbsrtowcs(): " << errno << endl;
buf.resize(0);
}
}

return buf;
}

get_wstring(expected)actual 的返回值现在都是wchar,因此可以在使用AreEqual(String^, String^, bool) 时进行比较。

关于c++ - 使用字符串断言 BSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com