[英]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.