如何解决直接从char *返回std :: string *
我正在构建一个跨平台应用程序,并且具有一个将平台字符类型转换为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。如何避免这种情况?
解决方法
对于纯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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。