AfxExtractSubString
更新 : 2007 年 11 月
指定された文字列から部分文字列を抽出するためのグローバル関数です。
BOOL AFXAPI AfxExtractSubString (
CString& rString,
LPCTSTR lpszFullString,
int iSubString,
TCHAR chSep = '\n'
);
パラメータ
rString
- 個々の部分文字列を受け取る CString オブジェクトへの参照。
lpszFullString
- 抽出元の文字列全体を保持する文字列。
iSubString
- lpszFullString から抽出する部分文字列の 0 から始まるインデックス。
chSep
- 部分文字列の区切りを表す区切り記号。
戻り値
指定されたインデックス位置の部分文字列を抽出できた場合は TRUE、それ以外の場合は FALSE。
解説
この関数を使用すると、部分文字列の区切りとなる単一の文字があらかじめわかっているときに、元になる文字列から複数の部分文字列を抽出できます。この関数を呼び出すたびに、検索が lpszFullString パラメータの先頭から開始されます。
lpszFullString が NULL に設定されるか、指定された区切り記号の出現回数が iSubString+1 に至ることなく検索が lpszFullString の最後に到達した場合、FALSE が返されます。lpszFullString が NULL に設定された場合、rString パラメータは元の値から変化しません。それ以外の場合で、指定されたインデックス位置の部分文字列を抽出できなかった場合、rString パラメータは空の文字列に設定されます。
使用例
// The following example extracts a series of name, value pairs from a
// given source string:
// Input string consisting of a number of name, value pairs
LPCTSTR lpszSource = _T("\"Name\"=\"John Smith\"\n")
_T("\"Company\"=\"Contoso, Ltd\"\n\"Salary\"=\"25,000\"");
CString strNameValue; // an individual name, value pair
int i = 0; // substring index to extract
while (AfxExtractSubString(strNameValue, lpszSource, i))
{
// Prepare to move to the next substring
i++;
CString strName, strValue; // individual name and value elements
// Attempt to extract the name element from the pair
if (!AfxExtractSubString(strName, strNameValue, 0, _T('=')))
{
// Pass an error message to the debugger for display
OutputDebugString(_T("Error extracting name\r\n"));
continue;
}
// Attempt to extract the value element from the pair
if (!AfxExtractSubString(strValue, strNameValue, 1, _T('=')))
{
// Pass an error message to the debugger for display
OutputDebugString(_T("Error extracting value element\r\n"));
continue;
}
// Pass the name, value pair to the debugger for display
CString strOutput = strName + _T(" equals ") + strValue + _T("\r\n");
OutputDebugString(strOutput);
}
必要条件
Header: <afxwin.h>