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

提供: yonewiki
移動: 案内, 検索
(文字列の複製 WindowsDuplicateString(関数))
(文字列の複製 WindowsDuplicateString(関数))
856行: 856行:
 
  hStr2文字列の削除に成功しました。
 
  hStr2文字列の削除に成功しました。
 
  続行するには何かキーを押してください . . .
 
  続行するには何かキーを押してください . . .
 +
 +
== '''文字列の複製 WindowsDuplicateString(関数)''' ==
 +
文字列を複製する関数です。コピーとは少し違う動作をします。まずは使い方に関する説明とサンプルと動作結果を示します。
 +
 +
*'''WindowsDuplicateString(HSTRING型変数,HSTRING型ポインタ変数);'''
 +
 +
引数:
 +
:'''第1引数''':文字列値を複製したいHSTRING文字列変数を付与する。サンプルでは41行目で使われていて、引数はhStr1となっています。
 +
:'''第2引数''':第1引数で指定した文字列変数を複製して、新たに文字列値を保持したいHSTRINGポインタ変数(アドレス変数)を付与する。サンプルでは41行目で使われていて、引数は&hStr2となっています。
 +
 +
<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文字列の削除に成功しました。
 +
続行するには何かキーを押してください . . .
 +
 +
 
[[Windows Runtime Cpp]]へ戻る
 
[[Windows Runtime Cpp]]へ戻る

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



個人用ツール
名前空間

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