我正在构建一个跨平台应用程序,并且具有一个将平台字符类型转换为UTF-8的功能。
.container {
height: 100vh;
max-width: 100vw;
display: grid;
grid-template-columns: auto auto auto auto;
background-color: #80cbc4;
column-gap: 5%;
}
然后,对于Windows上的实现,我将分配一个新字符串,调用
#if _WIN32
typedef wchar_t platChar;
#else
typedef char platChar;
#endif
std::string ensureUtf8(platChar* chars);
但是,对于在macOS上的实现,我只想返回原始字符串。如果我这样做:
WideCharToMultibyte
但是,问题是,当我在std::string ensureUtf8(platChar* chars)
{
return std::string(chars);
}
上调用std::string
构造函数时,它必须复制char。如何避免这种情况?
答案 0 :(得分:0)
对于纯ASCII文本,您可以按照here中的说明进行创建:
std::string ensureUtf8(platChar* chars)
{
#if _WIN32
wstring ws(chars);
return std::string(ws.begin(), ws.end());
#else
return std::string(chars);
#endif
}