【发布时间】:2013-10-14 17:50:21
【问题描述】:
基于this answer 到一个相关问题,我尝试编写一个将标准字符串转换为宽字符串的方法,然后我可以将其转换为 wchar_t*。
为什么不是创建 wchar_t* 等价物的两种不同方法? (我已经展示了我的调试器给我的值)。
TEST_METHOD(TestingAssertsWithGetWideString)
{
std::wstring wString1 = GetWideString("me");
const wchar_t* wchar1 = wString1.c_str(); // wchar1 = "me"
const wchar_t* wchar2 = GetWideString("me").c_str(); // wchar2 = "ﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮ@" (Why?!)
}
其中GetWideString定义如下:
inline const std::wstring GetWideString(const std::string &str)
{
std::wstring wstr;
wstr.assign(str.begin(), str.end());
return wstr;
};
注意:以下也不起作用。
const wchar_t* wchar2 = GetWChar("me");
const wchar_t *GetWChar(const std::string &str)
{
std::wstring wstr;
wstr.assign(str.begin(), str.end());
return wstr.c_str();
};
【问题讨论】:
-
// Why doesn't this work?!- 你有一个指向临时缓冲区的指针。
标签: c++ string type-conversion wstring string-conversion