string s = "おはよう";
wstring ws = FUNCTION(s, ws);
如何将%s的内容分配给% ws?
搜索了谷歌,并使用了一些技术,但他们无法分配确切的内容。内容被扭曲了。
发布于 2012-01-23 17:54:13
int StringToWString(std::wstring &ws, const std::string &s)
{
std::wstring wsTmp(s.begin(), s.end());
ws = wsTmp;
return 0;
}
发布于 2010-04-04 15:42:29
你的问题说得太少了。严格地说,该示例是一个语法错误。但是,mbstowcs
可能就是您要找的。
它是一个C库函数,在缓冲区上操作,但这里有一个易于使用的习惯用法,由Mooing Duck提供:
std::wstring ws(s.size(), L' '); // Overestimate number of code points.
ws.resize(::mbstowcs_s(&ws[0], ws.size(), s.c_str(), s.size())); // Shrink to fit.
发布于 2014-11-14 01:14:28
仅Windows应用程序接口,在C++11实现之前,以防有人需要它:
#include <stdexcept>
#include <vector>
#include <windows.h>
using std::runtime_error;
using std::string;
using std::vector;
using std::wstring;
wstring utf8toUtf16(const string & str)
{
if (str.empty())
return wstring();
size_t charsNeeded = ::MultiByteToWideChar(CP_UTF8, 0,
str.data(), (int)str.size(), NULL, 0);
if (charsNeeded == 0)
throw runtime_error("Failed converting UTF-8 string to UTF-16");
vector<wchar_t> buffer(charsNeeded);
int charsConverted = ::MultiByteToWideChar(CP_UTF8, 0,
str.data(), (int)str.size(), &buffer[0], buffer.size());
if (charsConverted == 0)
throw runtime_error("Failed converting UTF-8 string to UTF-16");
return wstring(&buffer[0], charsConverted);
}
https://stackoverflow.com/questions/2573834
复制相似问题