Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
K formátování a analýze CString objektů se poskytuje řada funkcí. Tyto funkce můžete použít vždy, když budete muset manipulovat s CString objekty, ale jsou užitečné zejména pro formátování řetězců, které se zobrazí v textu pole se zprávou.
Tato skupina funkcí obsahuje také globální rutinu pro zobrazení pole se zprávou.
CString Funkce
| Název | Popis |
|---|---|
AfxExtractSubString |
Extrahuje podřetězce oddělené jedním znakem od daného zdrojového řetězce. |
AfxFormatString1 |
Nahradí daný řetězec znaky formátu %1 v řetězci obsaženém v tabulce řetězců. |
AfxFormatString2 |
Nahradí dva řetězce znaky formátu %1 a %2 v řetězci obsaženém v tabulce řetězců. |
AfxMessageBox |
Zobrazí okno se zprávou. |
Požadavky
Záhlaví afxwin.h
AfxExtractSubString
Tuto globální funkci lze použít k extrakci podřetězce z daného zdrojového řetězce.
BOOL AFXAPI AfxExtractSubString (
CString& rString,
LPCTSTR lpszFullString,
int iSubString,
TCHAR chSep = '\n');
Parametry
rString
Odkaz na CString objekt, který obdrží jednotlivý podřetěr.
lpszFullString
Řetězec obsahující celý text řetězce, ze který se má extrahovat.
iSubString
Index dílčího řetězce založeného na nule, ze lpszFullStringkteré se má extrahovat .
chSep
Znak oddělovače použitý k oddělovači podřetětěží.
Návratová hodnota
TRUEpokud funkce úspěšně extrahovali podřetěc na poskytnutém indexu; v opačném případě . FALSE
Poznámky
Tato funkce je užitečná pro extrakci více podřetězců ze zdrojového řetězce, když známý jeden znak odděluje jednotlivé podřetězce. Tato funkce hledá od začátku parametru lpszFullString při každém zavolání.
Tato funkce se vrátí FALSE , pokud lpszFullString je nastavená NULL hodnota nebo funkce dosáhne konce lpszFullString bez nalezení iSubString+1 výskytů zadaného znaku oddělovače. Parametr rString nebude změněn z původní hodnoty, pokud lpszFullString byl nastaven na NULL; v opačném případě je parametr nastaven na prázdný řetězec, rString pokud nelze extrahovat podřetězce pro zadaný index.
Příklad
// 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);
}
Požadavky
Záhlaví afxwin.h
AfxFormatString1
Nahradí řetězec odkazem lpsz1 na všechny instance znaků "%1" v prostředku řetězce šablony identifikovaného řetězcem nIDS.
void AfxFormatString1(
CString& rString,
UINT nIDS,
LPCTSTR lpsz1);
Parametry
rString
Odkaz na CString objekt, který bude obsahovat výsledný řetězec po provedení nahrazení.
nIDS
ID prostředku řetězce šablony, na kterém bude náhrada provedena.
lpsz1
Řetězec, který nahradí znaky "%1" formátu v řetězci šablony.
Poznámky
Nově vytvořený řetězec je uložen v rString. Pokud je například řetězec v řetězcové tabulce "File %1 not found"a lpsz1 je roven "C:\MYFILE.TXT", pak rString bude obsahovat řetězec "File C:\MYFILE.TXT not found". Tato funkce je užitečná pro formátování řetězců odesílaných do polí zpráv a dalších oken.
Pokud se znaky "%1" formátu zobrazí v řetězci více než jednou, provede se více nahrazení.
Příklad
void DisplayFileNotFoundMessage(LPCTSTR pszFileName)
{
CString strMessage;
// The IDS_FILENOTFOUND string resource contains "Error: File %1 not found"
AfxFormatString1(strMessage, IDS_FILENOTFOUND, pszFileName);
// In the previous call, substitute the actual file name for the
// %1 placeholder
AfxMessageBox(strMessage); // Display the error message
}
Požadavky
Záhlaví afxwin.h
AfxFormatString2
Nahradí řetězec odkazem lpsz1 na všechny výskyty znaků "%1"a řetězec, na který lpsz2 odkazuje všechny výskyty znaků "%2", v prostředku řetězce šablony identifikovaném řetězcem nIDS.
void AfxFormatString2(
CString& rString,
UINT nIDS,
LPCTSTR lpsz1,
LPCTSTR lpsz2);
Parametry
rString
Odkaz na CString ten, který bude obsahovat výsledný řetězec po provedení nahrazení.
nIDS
ID řetězcové tabulky řetězce šablony, na kterém bude náhrada provedena.
lpsz1
Řetězec, který nahradí znaky "%1" formátu v řetězci šablony.
lpsz2
Řetězec, který nahradí znaky "%2" formátu v řetězci šablony.
Poznámky
Nově vytvořený řetězec je uložen v rString. Pokud je například řetězec v tabulce "File %1 not found in directory %2"řetězců , lpsz1 odkazuje na "MYFILE.TXT"a lpsz2 odkazuje na "C:\MYDIR", pak rString bude obsahovat řetězec "File MYFILE.TXT not found in directory C:\MYDIR".
Pokud se znaky "%1" formátu nebo "%2" zobrazí v řetězci více než jednou, provede se více nahrazení. Nemusí být v číselném pořadí.
Příklad
void DisplayFileNotFoundMessage(LPCTSTR pszFileName, LPCTSTR pszDirectory)
{
CString strMessage;
// The IDS_FILENOTFOUND string resource contains "Error: File %1 not
// found in directory %2"
AfxFormatString2(strMessage, IDS_FILENOTFOUND2, pszFileName, pszDirectory);
// In the previous call, substitute the actual file and directory
// names into the message string
AfxMessageBox(strMessage); // Display the error message
}
Požadavky
Záhlaví afxwin.h
AfxMessageBox
Zobrazí na obrazovce okno se zprávou.
int AfxMessageBox(
LPCTSTR lpszText,
UINT nType = MB_OK,
UINT nIDHelp = 0);
int AFXAPI AfxMessageBox(
UINT nIDPrompt,
UINT nType = MB_OK,
UINT nIDHelp = (UINT) -1);
Parametry
lpszText
Odkazuje na CString objekt nebo řetězec ukončený hodnotou null obsahující zprávu, která se má zobrazit v poli zprávy.
nType
Styl pole zprávy. Na toto pole použijte některý ze stylů pole se zprávou.
nIDHelp
ID kontextu nápovědy pro zprávu; 0 označuje, že se použije výchozí kontext nápovědy aplikace.
nIDPrompt
Jedinečné ID použité k odkazování na řetězec v řetězcové tabulce.
Návratová hodnota
Nula, pokud není dostatek paměti pro zobrazení pole zprávy; v opačném případě se vrátí jedna z následujících hodnot:
IDABORTBylo vybráno tlačítko Přerušit.IDCANCELBylo vybráno tlačítko Zrušit.IDIGNOREBylo vybráno tlačítko Ignorovat.IDNOVybrali jsme tlačítko Ne.IDOKBylo vybráno tlačítko OK.IDRETRYBylo vybráno tlačítko Opakovat.IDYESBylo vybráno tlačítko Ano.
Pokud má okno se zprávou tlačítko Storno, vrátí se hodnota, IDCANCEL pokud je stisknuta klávesa ESC nebo je vybráno tlačítko Storno. Pokud okno se zprávou neobsahuje tlačítko Storno, stisknutí klávesy ESC nemá žádný vliv.
Funkce AfxFormatString1 a AfxFormatString2 můžou být užitečné při formátování textu, který se zobrazí v poli se zprávou.
Poznámky
První forma této přetížené funkce zobrazí textový řetězec odkazující na lpszText pole zprávy a používá nIDHelp k popisu kontextu nápovědy. Kontext nápovědy slouží k přechodu na přidružené téma nápovědy, když uživatel stiskne klávesu Nápověda (obvykle F1).
Druhá forma funkce používá prostředek řetězce s ID nIDPrompt k zobrazení zprávy v poli zprávy. Přidružená stránka nápovědy se nachází prostřednictvím hodnoty nIDHelp. Pokud se použije výchozí hodnota nIDHelp (-1), použije se pro kontext nápovědy ID nIDPromptprostředku řetězce. Další informace o definování kontextů nápovědy naleznete v technické poznámce 28.
Příklad
// A simple message box, with only the OK button.
AfxMessageBox(_T("Simple message box."));
// A message box that uses a string from a string table
// with yes and no buttons and the stop icon.
// NOTE: nStringID is an integer that contains a valid id of
// a string in the current resource.
AfxMessageBox(nStringID, MB_YESNO | MB_ICONSTOP);