どのようにSTDを変換する方法:はstd :: wstringのために、ベクター<wchar_t>
std::wstring word = L"xxxxxxx";
場合は、次の変換を行う方法?
std::vector<wchar_t> chars = word;
どのようにSTDを変換する方法:はstd :: wstringのために、ベクター<wchar_t>
std::wstring word = L"xxxxxxx";
場合は、次の変換を行う方法?
std::vector<wchar_t> chars = word;
ただ、イテレータのペアを使用して初期化:
std::vector<wchar_t> chars(word.begin(), word.end());
上記は、NULLターミネータを追加しません(ただし、文字列に1つが含まれている場合、それがコピーされます)。あなたがそれをしたい場合は、代わりに基本となる文字列データへのポインタのペアでベクトルを初期化します。
std::vector<wchar_t> chars(word.c_str(), word.c_str() + word.size() + 1);
がnullターミネータのための1を追加することを忘れないでください、そうでなければ効果は最初の例と同じになります。
wstringのc_str()またはdata()を使用してヌルターミネータを含めて一度に作成する方法があります。 (C++ 11では、これらはヌルで終了することが保証されています)、最後にsize()+ 1を追加すると、明確な動作が保証されます。したがって
:
std::vector<wchar_t> chars(word.c_str(), word.c_str() + word.size() + 1);
(または使用の代わりc_strのデータ()()が、以降のみC++ 11)の
可能性のある重複した[wchar文字の\ _tにベクトルを変換する方法\ * \ *?](http://stackoverflow.com/questions/17916842/how-to-convert-a-vectorwstring-to-a-wchar-t) –
私はこれが実行可能な重複ターゲットではないと思います。 – krzaq
@Anjanそれはまったく異なる質問です。 – juanchopanza