C で wstring を string に効率的に変換する方法
wstring を C の string に変換することは、国際化された文字列またはワイド文字列を扱う場合に不可欠です。キャラクターデータ。このガイドでは、この変換を効果的に実行するためのいくつかの手法を説明します。
方法 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 を string に変換するための効率的かつ直接的なメソッドを提供します。 std::stringstream も使用できますが、あまり最適ではありません。変換方法の選択は、実装の特定の要件と設定によって異なります。
以上がC で wstring を string に効率的に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。