簡體   English   中英

直接從 char* 返回 std::string

[英]Return std::string directly from char*

我正在構建一個跨平台應用程序,我有一個將平台字符類型轉換為 UTF-8 的函數。

#if _WIN32
typedef wchar_t platChar;
#else
typedef char platChar;
#endif

std::string ensureUtf8(platChar* chars);

然后,對於 Windows 上的實現,我會分配一個新字符串,調用

WideCharToMultibyte

但是,對於macos上的實現,我只想返回原始字符串。 如果我這樣做:

std::string ensureUtf8(platChar* chars)
{
    return std::string(chars);
}

但是,問題是,當我在chars上調用std::string構造函數時,它必須復制字符。 我怎樣才能避免這種情況?

對於純 ASCII 文本,您可以按照此處所述進行創建:

std::string ensureUtf8(platChar* chars)
{
#if _WIN32
    wstring ws(chars);
    return std::string(ws.begin(), ws.end());
#else
    return std::string(chars);
#endif
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM