微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

直接从char *返回std :: string *

如何解决直接从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 举报,一经查实,本站将立刻删除。