ホームページ >バックエンド開発 >C++ >C で wstring を string に効率的に変換する方法

C で wstring を string に効率的に変換する方法

DDD
DDDオリジナル
2024-12-17 18:50:15894ブラウズ

How to Efficiently Convert a wstring to a string in C  ?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。