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

提供: yonewiki
移動: 案内, 検索
(文字列の比較 WindowsCompareStringOrdinal(関数))
(応用:文字列配列のソート std::sortとstd::foreachの利用)
 
980行: 980行:
  
 
== '''文字列のNULL値確認 WindowsStringHasEmbeddedNull(関数)''' ==
 
== '''文字列のNULL値確認 WindowsStringHasEmbeddedNull(関数)''' ==
2つのHSTRING型文字列同士を比較する関数です。まずは使い方に関する説明とサンプルと動作結果を示します。
+
HSTRING型の文字列に\0が埋め込まれているかを確認し、引数のBOOL型アドレス変数の実体にその結果を格納します。1つ以上の\0が含まれていなければTRUEを返します。まずは使い方に関する説明とサンプルと動作結果を示します。
  
*'''WindowsStringHasEmbeddedNull(HSTRING型変数,HSTRING型変数,INT32型ポインタ変数);'''
+
*'''WindowsStringHasEmbeddedNull(HSTRING型変数,BOOL型アドレス変数);'''
  
 
引数:
 
引数:
:'''第1引数''':文字列値を比較したいHSTRING文字列変数を付与する。サンプルでは55行目で使われていて、引数はhStr1となっています。
+
:'''第1引数''':文字列値の\0保持を確認したいHSTRING文字列変数を指定します。サンプルでは55行目で使われていて、引数はhStr1となっています。
:'''第2引数''':文字列値を比較したいHSTRING文字列変数を付与する。サンプルでは55行目で使われていて、引数はhStr2となっています。
+
:'''第2引数''':確認結果を受け取る実体のあるBOOL型のアドレス変数を指定します。サンプルでは55行目で使われていて、引数は&B_Resultとなっています。
:'''第3引数''':第1引数と第2引数で指定した文字列同士を比較して、比較の結果をINT32型のポインタ変数(アドレス変数)を付与する。サンプルでは55行目で使われていて、引数は&INT32CompResultとなっています。第一引数の文字列と第二引数の文字列の比較の結果、現在指定されているLOCALEに基づいた辞書順で1つの目の方が辞書順で小さい場合は-1,同等値(完全一致)なら0,大きい場合は1がポインタの実体値として設定されます。
+
  
 
<syntaxhighlight lang="cpp" line start="1">
 
<syntaxhighlight lang="cpp" line start="1">
1,013行: 1,012行:
  
 
HSTRING hStr1, hStr2;
 
HSTRING hStr1, hStr2;
INT32 i32CompResult;
+
BOOL B_Result;
 
const wchar_t *cStr1 = L"あきたけん";
 
const wchar_t *cStr1 = L"あきたけん";
const wchar_t *cStr2 = L"おおさかふ";
+
wchar_t cStr2[1] = L"";
 
size_t length = wcslen(cStr1);
 
size_t length = wcslen(cStr1);
  
1,028行: 1,027行:
 
wprintf_s(L"hStr1文字列の生成に成功しました。\n");
 
wprintf_s(L"hStr1文字列の生成に成功しました。\n");
 
}
 
}
 +
 +
cStr2[0] = 0x24;//wchar_t型としては不安全な代入(サンプル向けの強行代入)
  
 
length = wcslen(cStr2);
 
length = wcslen(cStr2);
1,041行: 1,042行:
  
 
wprintf_s(L"文字列1  =%s\n", WindowsGetStringRawBuffer(hStr1, nullptr));
 
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);
 
wprintf_s(L"hStr1_Address=%p, hStr2_Address=%p\n", hStr1, &hStr2);
  
hr = WindowsCompareStringOrdinal(hStr1, hStr2, &i32CompResult);
+
hr = WindowsStringHasEmbeddedNull(hStr1, &B_Result);
 
if (FAILED(hr)) {
 
if (FAILED(hr)) {
 
wprintf_s(L"文字列の比較に失敗しました。\n");
 
wprintf_s(L"文字列の比較に失敗しました。\n");
1,055行: 1,055行:
  
 
wprintf_s(L"\n");
 
wprintf_s(L"\n");
wprintf_s(L"比較結果  =%d\n", i32CompResult);
+
wprintf_s(L"cStr1\n");
 +
wprintf_s(L"比較結果(B_Result == true)  =%d\n", (B_Result == TRUE));
 +
wprintf_s(L"\n");
 +
 
 +
hr = WindowsStringHasEmbeddedNull(hStr2, &B_Result);
 +
if (FAILED(hr)) {
 +
wprintf_s(L"文字列の比較に失敗しました。\n");
 +
_CrtDbgBreak();
 +
return 0;
 +
}
 +
else {
 +
wprintf_s(L"文字列の比較に成功しました。\n");
 +
}
 +
 
 +
wprintf_s(L"\n");
 +
wprintf_s(L"cStr2\n");
 +
wprintf_s(L"比較結果(B_Result == true)  =%d\n", (B_Result == TRUE));
 +
wprintf_s(L"\n");
  
 
hr = WindowsDeleteString(hStr2);
 
hr = WindowsDeleteString(hStr2);
1,082行: 1,099行:
  
 
return 0;
 
return 0;
}
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
1,091行: 1,107行:
 
  hStr2文字列の生成に成功しました。
 
  hStr2文字列の生成に成功しました。
 
  文字列1  =あきたけん
 
  文字列1  =あきたけん
文字列2  =おおさかふ
+
  hStr1_Address=01459DC0, hStr2_Address=0118F938
  hStr1_Address=0023B778, hStr2_Address=00CFFB60
+
 
  文字列の比較に成功しました。
 
  文字列の比較に成功しました。
 
   
 
   
  比較結果  =-1
+
  cStr1
 +
比較結果(B_Result == true)  =0
 +
 +
文字列の比較に成功しました。
 +
 +
cStr2
 +
比較結果(B_Result == true)  =1
 +
 
  hStr2文字列の削除に成功しました。
 
  hStr2文字列の削除に成功しました。
 
  hStr1文字列の削除に成功しました。
 
  hStr1文字列の削除に成功しました。
 +
続行するには何かキーを押してください . . .
 +
 +
 +
== '''文字列のバッファ確保 WindowsPreallocateStringBuffer(関数)''' ==
 +
不変のHSTRING型として文字列を生成する前に、変更可能なPWSTR型文字列変数の文字列領域を確保すると同時に、変更可能な形式のHSTRING_BUFFER型に関連付ける関数です。
 +
 +
*'''WindowsPreallocateStringBuffer(確保する領域の大きさ,PWSTR型アドレス変数,HSTRING_BUFFER型アドレス変数);'''
 +
 +
引数:
 +
:'''第1引数''':確保する文字列変数PWSTRの大きさを指定します。サンプルでは28行目で使われていて、引数は10となっています。
 +
:'''第2引数''':PWSTR型のアドレス変数を指定します。この変数が文字列バッファとして、HSTRING_BUFFERと連動し、機能します。サンプルでは28行目で使われていて、引数は&PWSTR_Bufferとなっています。
 +
:'''第3引数''':HSTRING_BUFFER型のアドレス変数を指定します。第二引数の変数と連動するように機能します。サンプルでは28行目で使われていて、引数は&HSTRING_BUFFER_Bufferとなっています。
 +
 +
 +
このWindowsPreallocateStringBufferで連携させたHSTRING_BUFFERをHSTRING型の文字列に引き渡す関数WindowsPromoteStringBufferが42行目で同時にサンプルの中に使われていますが、これについては後述の記事で記述します。
 +
<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 HSTRING_String = NULL;
 +
HSTRING_BUFFER HSTRING_BUFFER_Buffer = NULL;
 +
PWSTR PWSTR_Buffer = NULL;
 +
 +
hr = WindowsPreallocateStringBuffer(10, &PWSTR_Buffer, &HSTRING_BUFFER_Buffer);
 +
if (FAILED(hr)) {
 +
wprintf_s(L"PWSTRおよびHSTRING_BUFFER文字列(10)の確保に失敗しました。\n");
 +
_CrtDbgBreak();
 +
return 0;
 +
}
 +
else {
 +
wprintf_s(L"PWSTRおよびHSTRING_BUFFER文字列(10)の確保に成功しました。\n");
 +
}
 +
 +
wsprintf(PWSTR_Buffer, L"文字列の出力");
 +
 +
if(SUCCEEDED(hr))
 +
{
 +
hr = WindowsPromoteStringBuffer(HSTRING_BUFFER_Buffer, &HSTRING_String);
 +
if (FAILED(hr)) {
 +
wprintf_s(L"HSTRING_Stringの生成に失敗しました。\n");
 +
_CrtDbgBreak();
 +
return 0;
 +
}
 +
else {
 +
wprintf_s(L"HSTRING_Stringの生成に成功しました。\n");
 +
}
 +
wprintf(L"\n");
 +
wprintf(L"HSTRING_String文字列=%s\n",WindowsGetStringRawBuffer(HSTRING_String, nullptr));
 +
wprintf(L"\n");
 +
}
 +
 +
WindowsDeleteString(HSTRING_String);
 +
 +
RoUninitialize();
 +
 +
_wsystem(L"pause");
 +
 +
return 0;
 +
}
 +
</syntaxhighlight>
 +
 +
実行結果の出力結果
 +
初期化に成功しました。
 +
PWSTRおよびHSTRING_BUFFER文字列(10)の確保に成功しました。
 +
HSTRING_Stringの生成に成功しました。
 +
 +
HSTRING_String文字列=文字列の出力
 +
 
  続行するには何かキーを押してください . . .
 
  続行するには何かキーを押してください . . .
  
  
 +
== '''文字列バッファをHSTRING型に引き渡す WindowsPromoteStringBuffer(関数)''' ==
 +
[[Windows Runtime Cpp 文字列操作#文字列のバッファ確保 WindowsPreallocateStringBuffer(関数)|バッファ確保]]のところのサンプルで示しましたが、WindowsPreallocateStringBufferで確保したバッファからHSTRING型の変数に引き渡す関数です。
 +
 +
*'''WindowsPromoteStringBuffer(HSTRING_BUFFER型変数,実体のあるHSTRING型アドレス変数);'''
 +
 +
引数:
 +
:'''第1引数''':文字列値を引き渡したいHSTRING_BUFFER文字列変数を指定する。サンプルでは42行目で使われていて、引数はHSTRING_BUFFER_Bufferとなっています。
 +
:'''第1引数''':文字列値を受け取るHSTRING型アドレス変数を指定する。サンプルでは42行目で使われていて、引数はHSTRING_Stringとなっています。
 +
 +
 +
このようにして、不変であるHSTRING文字列を使う前に一時的にHSTRING_BUFFERに関連付けた変数と文字列を連携させておいて、最後にHSTRING型で受け取るというような回りくどい方法も準備されてます。どういう風に便利なのかはあんまりわかりません。経験の不足によるものですね。実際にプログラミングをやってみるとコード作成効率があがるコツがわかるんだと思います。つうか、HSTRING型をこの先、利用していく必要があるのかすら謎です。ま、でもHSTRING文字列操作の記事としては完結ですね。
 +
 +
 +
== '''応用:文字列配列のソート std::sortとstd::for_eachの利用''' ==
 +
STL(Standard Template Liblary)で準備されているソート関数を利用する例を示します。文字列配列を扱うためのstd::vectorテンプレートとクイックソート処理を行うstd::sortと配列を一覧するstd::for_eachを使えば、WindowsCompareStringOrdinal関数の文字列比較を利用して文字列配列のソート処理ができます。sort関数の第3引数は[]()->{}というカタチをとるラムダ式による処理が与えられています。ラムダ式についての詳細は[[Cpp ラムダ式]]を参照して下さい。サンプルのラムダ式はsort部では()引数部に2つのHSTRING型のaという変数とbという変数が引数になっています。->boolという部分でラムダ式の処理結果として返す値の変数の型を指定しています。{}内がラムダ式の処理値です。[]は内の値はキャプチャと呼ばれる外部を参照する変数を指定するものです。sort処理のクイックソートにおける前方値と後方値という位置づけの再帰的な引数が処理部に渡される仕組みで、処理部では、前方値と後方値の大きさを比較して、bool型の値を返却することになっています。比較の結果、大きい値が前方にあってtrue返すような関数なら降順に整列されます。大きい値が前方にある場合、WindowsCompareStringOrdinalの結果はtrueなので、そのまま、この結果を返すか、サンプルのようにr>0と結果値rがtrueならtrueになるような比較の結果を返却する式をreturn文で指定しています。
 +
 +
 +
2つめのfor_each関数のラムダ式は返却値無しで引数となるすべての配列値をひとつづつ処理するような内容のラムダ式としての処理部があれば良いので、サンプルのような処理になっています。HSTRING型の文字操作は先の項目にあげたような処理のみに限られ、変数が保持している文字列の内容そのものを変えることはできません。ですが、サンプルのようなvectorテンプレートの配列で順番を入れ替えるのはHSTRING型の文字列値をかえることなく配列の順番を意味する配列番号がもつHSTRING変数のアドレス変数を保持しなおすような整列であって中身を入れ替えるわけではないので、整列が可能なのです。お間違いなきよういただければと思います。
 +
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#include <locale.h>
 +
#include <wchar.h>
 +
#include <stdio.h>
 +
#include <vector>
 +
#include <algorithm>
 +
#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");
 +
}
 +
 +
const wchar_t *pcStrList[] = {
 +
L"04_文字列ネイティブ変数参照連動",
 +
L"09_文字列置換_置換変数指定",
 +
L"05_文字列結合",
 +
L"深田 恭子",
 +
L"小西 真奈美",
 +
L"広瀬 すず",
 +
L"広瀬 アリス",
 +
L"土屋 太鳳",
 +
nullptr
 +
};
 +
 +
std::vector<HSTRING> hStringList;
 +
for (int i = 0; pcStrList[i]; ++i)
 +
{
 +
HSTRING HSTRING_StrTemp;
 +
const wchar_t *cStr = pcStrList[i];
 +
hr = WindowsCreateString(cStr, wcslen(cStr), &HSTRING_StrTemp);
 +
if (FAILED(hr))
 +
{
 +
wprintf_s(L"文字列の生成に失敗しました\n");
 +
_CrtDbgBreak();
 +
return 0;
 +
}
 +
else {
 +
wprintf_s(L"文字列の生成に成功しました\n");
 +
}
 +
 +
hStringList.push_back(HSTRING_StrTemp);
 +
 +
hr = WindowsDeleteString(HSTRING_StrTemp);
 +
if (FAILED(hr)) {
 +
wprintf_s(L"文字列の削除に失敗しました\n");
 +
_CrtDbgBreak();
 +
}
 +
else {
 +
wprintf_s(L"文字列の削除に成功しました\n");
 +
}
 +
}
 +
 +
std::sort(
 +
hStringList.begin(),
 +
hStringList.end(),
 +
[hStringList, &pcStrList](const HSTRING a, const HSTRING b)->bool {
 +
    int r;
 +
HRESULT hr = WindowsCompareStringOrdinal(a, b, &r);
 +
wprintf_s(L"\n");
 +
wprintf_s(L"a = %s,b = %s %d(", WindowsGetStringRawBuffer(a, nullptr), WindowsGetStringRawBuffer(b, nullptr), r);
 +
if (r > 0) {
 +
wprintf_s(L">)\n");
 +
}
 +
else if (r < 0) {
 +
wprintf_s(L"<)\n");
 +
}
 +
else {
 +
wprintf_s(L"=)\n");
 +
}
 +
 +
if (FAILED(hr)) {
 +
wprintf_s(L"文字列の比較に失敗しました\n");
 +
_CrtDbgBreak();
 +
}
 +
else {
 +
//wprintf_s(L"文字列の比較に成功しました\n");
 +
}
 +
wprintf_s(L"\n");
 +
for (size_t i = 0; i < hStringList.size(); i++) {
 +
wprintf_s(L"%s,", WindowsGetStringRawBuffer(hStringList.at(i), nullptr));
 +
}
 +
wprintf_s(L"\n");
 +
 +
for (int i = 0; pcStrList[i]; i++) {
 +
wprintf_s(L"%s,", pcStrList[i]);
 +
}
 +
wprintf_s(L"\n");
 +
return r > 0;
 +
    }
 +
);
 +
 +
wprintf_s(L"\n");
 +
std::for_each(
 +
hStringList.begin(),
 +
hStringList.end(),
 +
[](HSTRING HSTRING_Str)->void{
 +
    wprintf_s(L"%s\n", WindowsGetStringRawBuffer(HSTRING_Str, nullptr));
 +
 +
    HRESULT hr = WindowsDeleteString(HSTRING_Str);
 +
    if (FAILED(hr)){
 +
    wprintf_s(L"文字列の削除に失敗しました\n");
 +
    _CrtDbgBreak();
 +
    }
 +
else {
 +
//wprintf_s(L"文字列の削除に成功しました\n");
 +
}
 +
    }
 +
);
 +
 +
 +
RoUninitialize();
 +
_wsystem(L"pause");
 +
}
 +
 +
</syntaxhighlight>
 +
 +
実行結果
 +
初期化に成功しました。
 +
文字列の生成に成功しました
 +
文字列の削除に成功しました
 +
文字列の生成に成功しました
 +
文字列の削除に成功しました
 +
文字列の生成に成功しました
 +
文字列の削除に成功しました
 +
文字列の生成に成功しました
 +
文字列の削除に成功しました
 +
文字列の生成に成功しました
 +
文字列の削除に成功しました
 +
文字列の生成に成功しました
 +
文字列の削除に成功しました
 +
文字列の生成に成功しました
 +
文字列の削除に成功しました
 +
文字列の生成に成功しました
 +
文字列の削除に成功しました
 +
 +
a = 09_文字列置換_置換変数指定,b = 04_文字列ネイティブ変数参照連動 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 04_文字列ネイティブ変数参照連動,b = 09_文字列置換_置換変数指定 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 05_文字列結合,b = 09_文字列置換_置換変数指定 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 05_文字列結合,b = 04_文字列ネイティブ変数参照連動 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 04_文字列ネイティブ変数参照連動,b = 05_文字列結合 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 05_文字列結合,b = 09_文字列置換_置換変数指定 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 深田 恭子,b = 09_文字列置換_置換変数指定 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 09_文字列置換_置換変数指定,b = 深田 恭子 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 小西 真奈美,b = 深田 恭子 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 小西 真奈美,b = 04_文字列ネイティブ変数参照連動 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 04_文字列ネイティブ変数参照連動,b = 小西 真奈美 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 小西 真奈美,b = 05_文字列結合 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 05_文字列結合,b = 小西 真奈美 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 小西 真奈美,b = 09_文字列置換_置換変数指定 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 09_文字列置換_置換変数指定,b = 小西 真奈美 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 小西 真奈美,b = 深田 恭子 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 すず,b = 深田 恭子 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 すず,b = 04_文字列ネイティブ変数参照連動 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 04_文字列ネイティブ変数参照連動,b = 広瀬 すず -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 すず,b = 05_文字列結合 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 05_文字列結合,b = 広瀬 すず -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 すず,b = 09_文字列置換_置換変数指定 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 09_文字列置換_置換変数指定,b = 広瀬 すず -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 すず,b = 小西 真奈美 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 小西 真奈美,b = 広瀬 すず -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 すず,b = 深田 恭子 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 アリス,b = 深田 恭子 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 アリス,b = 04_文字列ネイティブ変数参照連動 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 04_文字列ネイティブ変数参照連動,b = 広瀬 アリス -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 アリス,b = 05_文字列結合 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 05_文字列結合,b = 広瀬 アリス -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 アリス,b = 09_文字列置換_置換変数指定 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 09_文字列置換_置換変数指定,b = 広瀬 アリス -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 アリス,b = 小西 真奈美 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 小西 真奈美,b = 広瀬 アリス -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 アリス,b = 広瀬 すず 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 すず,b = 広瀬 アリス -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 広瀬 アリス,b = 深田 恭子 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 土屋 太鳳,b = 深田 恭子 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 土屋 太鳳,b = 04_文字列ネイティブ変数参照連動 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 04_文字列ネイティブ変数参照連動,b = 土屋 太鳳 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 土屋 太鳳,b = 05_文字列結合 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 05_文字列結合,b = 土屋 太鳳 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 土屋 太鳳,b = 09_文字列置換_置換変数指定 1(>)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 09_文字列置換_置換変数指定,b = 土屋 太鳳 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
a = 土屋 太鳳,b = 小西 真奈美 -1(<)
 +
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
04_文字列ネイティブ変数参照連動,09_文字列置換_置換変数指定,05_文字列結合,深田 恭子,小西 真奈美,広瀬 すず,広瀬 アリス,土 屋 太鳳,
 +
 +
深田 恭子
 +
広瀬 アリス
 +
広瀬 すず
 +
小西 真奈美
 +
土屋 太鳳
 +
09_文字列置換_置換変数指定
 +
05_文字列結合
 +
04_文字列ネイティブ変数参照連動
 +
続行するには何かキーを押してください . . .
 
[[Windows Runtime Cpp]]へ戻る
 
[[Windows Runtime Cpp]]へ戻る

2017年5月29日 (月) 00:00時点における最新版



個人用ツール
名前空間

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