以下のような TCHAR と値があります。
TCHAR szDestPathRoot[MAX_PATH]="String This";
以下のように、 TCHAR の最初の 3 文字が必要です。
szDestPathRoot.substring(0,2);
これどうやってするの。
TCHAR[]
(C ++クラスではなく)単純なnullで終了する配列です。その結果、「。substring()」メソッドはありません。
TCHAR[]
(定義上)ワイド文字列(Unicode)または単純な文字列(ASCII)のいずれかです。これは、各文字列関数(vsなど)にwcs
同等のものがあることを意味します。そして、どちらかまたは両方である可能性のある、不可知論的なコンパイル時の同等物。str
wcslen()
strlen()
TCHAR
にTCHAR
相当するものはstrncpy()
ですtcsncpy()
。
最後の注意:TCHAR
リテラルを宣言する_T()
には、次のスニペットに示すように、マクロを使用するのが最適です。
TCHAR szDestPathRoot[MAX_PATH] = _T("String This");
TCHAR szStrNew[4];
_tcsncpy (str_new, szTestPathRoot, 3);
あなたはこれらのリンクが興味深いと思うかもしれません:
TCHAR szDestPathRoot[MAX_PATH]="String This";
TCHAR substringValue[4] = {0};
memcpy(substringValue, szDestPathRoot, sizeof(TCHAR) * 3);
質問に「C++」のタグを付けたので、std ライブラリの文字列クラスを使用できます。
std::wstring strDestPathRoot( _T("String This") );
strDestPathRoot.substr( 0, 2 );
これはやや醜いですが、次のことが確実にわかっている場合:
文字列を 3 文字の長さにするには、4 番目の位置に終了 NUL を配置するだけです。
szDestPathRoot[3] = _T('\0');
この操作は元の文字列を破壊することに注意してください
ただし、実際には C++ コードで文字列クラスを使用する必要があります。