Windows Runtime Cpp 文字列操作 新しいページはコチラ
提供: yonewiki
(→文字列の抽出_指定始点~指定文字数 WindowsSubstringWithSpecifiedLength(関数)) |
(→文字列の置換_置換検索文字と置換後文字変数個別指定 WindowsReplaceString(関数)) |
||
566行: | 566行: | ||
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, hStr4; | ||
+ | const wchar_t *cStr1 = L"1234567890"; | ||
+ | const wchar_t *cStr2 = L"34"; | ||
+ | const wchar_t *cStr3 = L"43"; | ||
+ | size_t length = wcslen(cStr1); | ||
+ | |||
+ | length = wcslen(cStr1); | ||
+ | hr = WindowsCreateString(cStr1, length, &hStr1); | ||
+ | if (FAILED(hr)) { | ||
+ | wprintf_s(L"hStr1文字列の生成に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"hStr1文字列の生成に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | length = wcslen(cStr2); | ||
+ | hr = WindowsCreateString(cStr2, length, &hStr2); | ||
+ | if (FAILED(hr)) { | ||
+ | wprintf_s(L"hStr2文字列の生成に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"hStr2文字列の生成に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | length = wcslen(cStr3); | ||
+ | hr = WindowsCreateString(cStr3, length, &hStr3); | ||
+ | if (FAILED(hr)) { | ||
+ | wprintf_s(L"hStr3文字列の生成に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"hStr3文字列の生成に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | hr = WindowsReplaceString(hStr1, hStr2, hStr3, &hStr4); | ||
+ | if (FAILED(hr)) { | ||
+ | wprintf_s(L"部分文字列の生成に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"置換文字列の生成に成功しました。\n"); | ||
+ | } | ||
+ | wprintf_s(L"元文字列 =%s 検索文字列=%s 置換文字列=%s\n", WindowsGetStringRawBuffer(hStr1, nullptr), WindowsGetStringRawBuffer(hStr2, nullptr), WindowsGetStringRawBuffer(hStr3, nullptr)); | ||
+ | wprintf_s(L"置換後文字列=%s\n", WindowsGetStringRawBuffer(hStr4, nullptr)); | ||
+ | wprintf_s(L"hStr1_Address=%p, hStr2_Address=%p, hStr3_Address=%p, hStr4_Address=%p\n", hStr1, hStr2, hStr3, hStr4); | ||
+ | |||
+ | hr = WindowsDeleteString(hStr4); | ||
+ | if (FAILED(hr)) { | ||
+ | wprintf_s(L"hStr4文字列の削除に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"hStr4文字列の削除に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | 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"); | ||
+ | } | ||
+ | |||
+ | RoUninitialize(); | ||
+ | |||
+ | _wsystem(L"pause"); | ||
+ | |||
+ | return 0; | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |