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

提供: yonewiki
移動: 案内, 検索
(文字列のNULL値確認 WindowsStringHasEmbeddedNull(関数))
(文字列のNULL値確認 WindowsStringHasEmbeddedNull(関数))
1,122行: 1,122行:
 
  続行するには何かキーを押してください . . .  
 
  続行するには何かキーを押してください . . .  
  
 +
 +
== '''文字列のバッファ確保 WindowsPreallocateStringBuffer(関数)''' ==
 +
不変のHSTRING型として文字列を生成する前に、変更可能なPWSTR型文字列変数の文字列領域を確保すると同時に、変更可能な形式のHSTRING_BUFFER型に関連付ける関数です。
 +
 +
*'''WindowsPreallocateStringBuffer(確保する領域の大きさ,PWSTR型アドレス変数,HSTRING_BUFFER型アドレス変数);'''
 +
 +
引数:
 +
:'''第1引数''':確保する文字列変数PWSTRの大きさを指定します。サンプルでは55行目で使われていて、引数は10となっています。
 +
:'''第2引数''':PWSTR型のアドレス変数を指定します。この変数が文字列バッファとして、HSTRING_BUFFERと連動し、機能します。サンプルでは55行目で使われていて、引数は&PWSTR_Bufferとなっています。
 +
:'''第3引数''':HSTRING_BUFFER型のアドレス変数を指定します。第二引数の変数と連動するように機能します。サンプルでは55行目で使われていて、引数は&HSTRING_BUFFER_Bufferとなっています。
 +
 +
<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文字列=文字列の出力
 +
 +
続行するには何かキーを押してください . . .
  
 
[[Windows Runtime Cpp]]へ戻る
 
[[Windows Runtime Cpp]]へ戻る

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



個人用ツール
名前空間

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