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

时间:2020-11-12 01:02:40

标签: c++ string memory memory-management

我正在构建一个跨平台应用程序,并且具有一个将平台字符类型转换为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。如何避免这种情况?

1 个答案:

答案 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
}