Windows Runtime Cpp 文字列操作 新しいページはコチラ
提供: yonewiki
(→文字列の抽出_指定始点~終端 WindowsSubstring(関数)) |
(→文字列のネイティブ変数参照連動 WindowsCreateReference(関数)) |
||
124行: | 124行: | ||
int main() { | 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, hRefStr; | ||
+ | HSTRING_HEADER header; | ||
+ | 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"); | ||
+ | } | ||
+ | |||
+ | hr = WindowsCreateStringReference(cStr, length, &header, &hRefStr); | ||
+ | if (FAILED(hr)) { | ||
+ | wprintf_s(L"hString文字列参照の生成に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"hString文字列参照の生成に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | PCWSTR hStrBuffer = WindowsGetStringRawBuffer(hStr, nullptr); | ||
+ | |||
+ | wprintf_s(L"%s\n", hStrBuffer); | ||
+ | wprintf_s(L"Address=%p\n\n", hStrBuffer); | ||
+ | |||
+ | PCWSTR hRefStrBuffer = WindowsGetStringRawBuffer(hRefStr, nullptr); | ||
+ | |||
+ | wprintf_s(L"%s\n", hRefStrBuffer); | ||
+ | wprintf_s(L"Address=%p\n\n", hRefStrBuffer); | ||
+ | |||
+ | wprintf_s(L"%s\n", cStr); | ||
+ | wprintf_s(L"Address=%p\n\n", cStr); | ||
+ | |||
+ | swprintf_s(cStr, L"ワイド文字列の再設定をswprintf_s関数で実施。"); | ||
+ | |||
+ | wprintf_s(L"%s\n", hRefStrBuffer); | ||
+ | wprintf_s(L"Address=%p\n\n", hRefStrBuffer); | ||
+ | |||
+ | hr = WindowsDeleteString(hStr); | ||
+ | if (FAILED(hr)) { | ||
+ | wprintf_s(L"hStr文字列の削除に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"hStr文字列の削除に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | hr = WindowsDeleteString(hRefStr); | ||
+ | if (FAILED(hr)) { | ||
+ | wprintf_s(L"hRefStr文字列の削除に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"hRefStr文字列の削除に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | RoUninitialize(); | ||
+ | |||
+ | _wsystem(L"pause"); | ||
+ | |||
+ | return 0; | ||
} | } | ||
131行: | 211行: | ||
実行結果の出力結果 | 実行結果の出力結果 | ||
★ここに出力結果を貼り付けます★ | ★ここに出力結果を貼り付けます★ | ||
− | |||
== '''文字列結合 WindowsConcatString(関数)''' == | == '''文字列結合 WindowsConcatString(関数)''' == |