Windows Runtime Cpp 文字列操作のソースを表示
新しいページはコチラ
移動:
案内
,
検索
[[Windows Runtime Cpp]]へ戻る == '''概要''' == 文字列操作関数としてHSTRING型というのが提供されていて、WindowsRuntime関数では、この文字列型を利用するので、この文字列型を一通り覚える必要があるようです。 == '''生成 WindowsCreateString(関数)''' == wchar_t型なんかの、c++言語の文字列操作で使われたような文字列型が生成関数の引数として使われます。例えば以下のようなプログラムで、生成することができます。 <syntaxhighlight lang="cpp" line start="1"> #include <locale.h> #include <wchar.h> #include <stdio.h> #include <crtdbg.h> #include <roapi.h> #include <winstring.h> int main() { HRESULT hr; setlocale(LC_ALL, ""); hr = RoInitialize(RO_INIT_TYPE::RO_INIT_MULTITHREADED); if (FAILED(hr)) { wprintf_s(L"初期化に失敗しました。\n"); _CrtDbgBreak(); return 0; } else { wprintf_s(L"初期化に成功しました。\n"); } HSTRING hStr; wchar_t cStr[] = L"ワイド文字列"; size_t length = wcslen(cStr); hr = WindowsCreateString(cStr, length, &hStr); if (FAILED(hr)) { wprintf_s(L"HSTRING文字列の生成に失敗しました。\n"); _CrtDbgBreak(); return 0; } else { wprintf_s(L"HSTRING文字列の生成に成功しました。\n"); } wprintf_s(L"\n★%s\n\n", WindowsGetStringRawBuffer(hStr, nullptr)); hr = WindowsDeleteString(hStr); if (FAILED(hr)) { wprintf_s(L"hStr文字列の削除に失敗しました。\n"); _CrtDbgBreak(); return 0; } else { wprintf_s(L"hStr文字列の削除に成功しました。\n"); } RoUninitialize(); _wsystem(L"pause"); return 0; } </syntaxhighlight> 実行結果の出力結果 初期化に成功しました。 HSTRING文字列の生成に成功しました。 ★ワイド文字列 hStr文字列の削除に成功しました。 という長いサンプルになってしまいましたが、こういう感じですね。 *WindowsCreateString(文字列配列先頭アドレス, 文字列調, HSTRING型変数のアドレス); 引数: 第1引数:文字列配列先頭アドレス サンプルプログラムでは wchar_t の配列cStrという変数で初期化文字列を与えて生成したものの先頭アドレスを引数にしています。cStr[]配列の先頭アドレスはcStrになります。管理人の場合はpcStrという変数名を使うのが流儀です。配列での初期化をするとポインタ変数としてcStrを宣言した意識が薄れる感じはありますが、そこまで神経質なプログラマはあまりみかけませんね。自分で覚えとけってことっすかね。 第2引数:文字列の長さをwcslen(cStr)で取得したものをsize_t型の変数lengthに取得していますので、サンプルではlengthを引数にしています。 第3引数:HSTRING型変数のアドレスを引数にします。 サンプルでは実体化されて宣言されたHSTRING型のhStrのアドレスを受け取るため&hStrとしています。 [[Windows Runtime Cpp]]へ戻る
Windows Runtime Cpp 文字列操作
に戻る。
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ