Windows Runtime Cpp 文字列操作 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(文字列の比較 WindowsCompareStringOrdinal(関数))
(文字列の比較 WindowsCompareStringOrdinal(関数))
861行: 861行:
  
 
*'''WindowsCompareStringOrdinal(HSTRING型変数,HSTRING型変数,INT32型ポインタ変数);'''
 
*'''WindowsCompareStringOrdinal(HSTRING型変数,HSTRING型変数,INT32型ポインタ変数);'''
 +
 +
引数:
 +
:'''第1引数''':文字列値を比較したいHSTRING文字列変数を付与する。サンプルでは55行目で使われていて、引数はhStr1となっています。
 +
:'''第2引数''':文字列値を比較したいHSTRING文字列変数を付与する。サンプルでは55行目で使われていて、引数はhStr2となっています。
 +
:'''第3引数''':第1引数と第2引数で指定した文字列同士を比較して、比較の結果をINT32型のポインタ変数(アドレス変数)を付与する。サンプルでは55行目で使われていて、引数は&INT32CompResultとなっています。第一引数の文字列と第二引数の文字列の比較の結果、現在指定されているLOCALEに基づいた辞書順で1つの目の方が辞書順で小さい場合は-1,同等値(完全一致)なら0,大きい場合は1がポインタの実体値として設定されます。
 +
 +
<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 hStr1, hStr2;
 +
INT32 i32CompResult;
 +
const wchar_t *cStr1 = L"あきたけん";
 +
const wchar_t *cStr2 = L"おおさかふ";
 +
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");
 +
}
 +
 +
wprintf_s(L"文字列1  =%s\n", WindowsGetStringRawBuffer(hStr1, nullptr));
 +
wprintf_s(L"文字列2  =%s\n", WindowsGetStringRawBuffer(hStr2, nullptr));
 +
wprintf_s(L"hStr1_Address=%p, hStr2_Address=%p\n", hStr1, &hStr2);
 +
 +
hr = WindowsCompareStringOrdinal(hStr1, hStr2, &i32CompResult);
 +
if (FAILED(hr)) {
 +
wprintf_s(L"文字列の比較に失敗しました。\n");
 +
_CrtDbgBreak();
 +
return 0;
 +
}
 +
else {
 +
wprintf_s(L"文字列の比較に成功しました。\n");
 +
}
 +
 +
wprintf_s(L"\n");
 +
wprintf_s(L"比較結果  =%d\n", i32CompResult);
 +
 +
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>
 +
 +
実行結果の出力結果
 +
初期化に成功しました。
 +
hStr1文字列の生成に成功しました。
 +
hStr2文字列の生成に成功しました。
 +
文字列1  =あきたけん
 +
文字列2  =おおさかふ
 +
hStr1_Address=0023B778, hStr2_Address=00CFFB60
 +
文字列の比較に成功しました。
 +
 +
比較結果  =-1
 +
hStr2文字列の削除に成功しました。
 +
hStr1文字列の削除に成功しました。
 +
続行するには何かキーを押してください . . .
 +
 +
 +
== '''文字列のNULL値確認 WindowsStringHasEmbeddedNull(関数)''' ==
 +
2つのHSTRING型文字列同士を比較する関数です。まずは使い方に関する説明とサンプルと動作結果を示します。
 +
 +
*'''WindowsStringHasEmbeddedNull(HSTRING型変数,HSTRING型変数,INT32型ポインタ変数);'''
  
 
引数:
 
引数:

2017年5月27日 (土) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス