Windows Runtime Cpp 文字列操作 新しいページはコチラ
提供: yonewiki
(→文字列のネイティブ変数参照連動 WindowsCreateReference(関数)) |
(→文字列結合 WindowsConcatString(関数)) |
||
| 232行: | 232行: | ||
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 hStr1, hStr2, hStr3, hRefStr; | ||
| + | HSTRING_HEADER header; | ||
| + | wchar_t cStr1[] = L"ワイド文字列:前半 "; | ||
| + | wchar_t cStr2[] = L"ワイド文字列:後半 "; | ||
| + | size_t length = wcslen(cStr1); | ||
| + | |||
| + | hr = WindowsCreateString(cStr1, length, &hStr1); | ||
| + | if (FAILED(hr)) { | ||
| + | wprintf_s(L"hString文字列の生成に失敗しました。\n"); | ||
| + | _CrtDbgBreak(); | ||
| + | return 0; | ||
| + | } | ||
| + | else { | ||
| + | wprintf_s(L"hString文字列の生成に成功しました。\n"); | ||
| + | } | ||
| + | |||
| + | hr = WindowsCreateString(cStr2, length, &hStr2); | ||
| + | if (FAILED(hr)) { | ||
| + | wprintf_s(L"hString文字列の生成に失敗しました。\n"); | ||
| + | _CrtDbgBreak(); | ||
| + | return 0; | ||
| + | } | ||
| + | else { | ||
| + | wprintf_s(L"hString文字列の生成に成功しました。\n"); | ||
| + | } | ||
| + | |||
| + | hr = WindowsConcatString(hStr1, hStr2, &hStr3); | ||
| + | if (FAILED(hr)) { | ||
| + | wprintf_s(L"hString文字列結合の生成に失敗しました。\n"); | ||
| + | _CrtDbgBreak(); | ||
| + | return 0; | ||
| + | } | ||
| + | else { | ||
| + | wprintf_s(L"hString文字列結合の生成に成功しました。\n"); | ||
| + | } | ||
| + | |||
| + | wprintf_s(L"%s\n", WindowsGetStringRawBuffer(hStr3, nullptr)); | ||
| + | wprintf_s(L"Address=%p\n\n", hStr3); | ||
| + | |||
| + | hr = WindowsCreateStringReference(cStr1, length, &header, &hRefStr); | ||
| + | if (FAILED(hr)) { | ||
| + | wprintf_s(L"hString文字列参照の生成に失敗しました。\n"); | ||
| + | _CrtDbgBreak(); | ||
| + | return 0; | ||
| + | } | ||
| + | else { | ||
| + | wprintf_s(L"hString文字列参照の生成に成功しました。\n"); | ||
| + | } | ||
| + | |||
| + | PCWSTR hStrBuffer = WindowsGetStringRawBuffer(hStr1, 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", cStr1); | ||
| + | wprintf_s(L"Address=%p\n\n", cStr1); | ||
| + | |||
| + | swprintf_s(cStr1, L"ワイド文字列の再設定をswprintf_s関数で実施。"); | ||
| + | |||
| + | wprintf_s(L"%s\n", hRefStrBuffer); | ||
| + | wprintf_s(L"Address=%p\n\n", hRefStrBuffer); | ||
| + | |||
| + | hr = WindowsDeleteString(hStr3); | ||
| + | if (FAILED(hr)) { | ||
| + | wprintf_s(L"hStr3文字列の削除に失敗しました。\n"); | ||
| + | _CrtDbgBreak(); | ||
| + | return 0; | ||
| + | } | ||
| + | else { | ||
| + | wprintf_s(L"hStr3文字列の削除に成功しました。\n"); | ||
| + | } | ||
| + | |||
| + | hr = WindowsDeleteString(hStr2); | ||
| + | if (FAILED(hr)) { | ||
| + | wprintf_s(L"hStr2文字列の削除に失敗しました。\n"); | ||
| + | _CrtDbgBreak(); | ||
| + | return 0; | ||
| + | } | ||
| + | else { | ||
| + | wprintf_s(L"hStr2文字列の削除に成功しました。\n"); | ||
| + | } | ||
| + | |||
| + | hr = WindowsDeleteString(hStr1); | ||
| + | if (FAILED(hr)) { | ||
| + | wprintf_s(L"hStr1文字列の削除に失敗しました。\n"); | ||
| + | _CrtDbgBreak(); | ||
| + | return 0; | ||
| + | } | ||
| + | else { | ||
| + | wprintf_s(L"hStr1文字列の削除に成功しました。\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; | ||
} | } | ||