如何有效地將wstring 轉換為C 中的字串
在使用國際化或寬格式時,將wstring 轉換為C中的字串可能至關重要字元資料。本指南將探索有效執行此轉換的幾種技術。
方法 1:std::wstring_convert
在 C 11 中引入,std::wstring_convert 提供了一個簡單且wstring 和 string 之間轉換的有效方法。它使用適當的 codecvt 方面來處理轉換。
#include <locale> #include <codecvt> // Unicode UTF-8 codecvt std::wstring_convert<std::codecvt_utf8<wchar_t>> converter; // Conversion std::wstring wstr = L"Hello"; std::string str = converter.to_bytes(wstr);
方法2:std::string 建構子重載
C 11 引入了std:: 的建構子接受指向字元陣列的指標的字元串。這可以用於透過將寬字元轉換為窄字元來將 wstring 轉換為字串。
#include <string> // Convert wchar_t to char using wcstombs std::wstring wstr = L"Hello"; const wchar_t* wchar_ptr = wstr.c_str(); char* char_ptr; size_t char_size = wcstombs(nullptr, wchar_ptr, 0); char_ptr = new char[char_size + 1]; wcstombs(char_ptr, wchar_ptr, char_size + 1); // Construct std::string from char array std::string str(char_ptr);
方法3:std::stringstream
雖然不是推薦,std::stringstream可用於將wstring轉換為字串,但需要額外的步驟將wstringstream轉換為字串string.
#include <sstream> std::wstring wstr = L"Hello"; std::wstringstream wss(wstr); // Extract std::string from std::wstringstream std::string str; wss >> str;
結論
std::wstring_convert 和std::string 建構函式重載提供了將 wstring 轉換為字串的高效且直接的方法。雖然可以使用 std::stringstream,但它並不是最佳選擇。轉換方法的選擇取決於實現的具體要求和偏好。
以上是如何在 C 中有效地將 wstring 轉換為字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!