私は持っていCString st= $/Abc/cda/($/dba/abc)/ます。$の最初の出現のみをに置き換えたいc:\。
私は次のように置き換えようとしました
st.Replace("$","c:\");
しかし、それは のすべての出現を置き換えました$。
最初に出現した文字のみを置き換えるロジックを教えてください。
私は持っていCString st= $/Abc/cda/($/dba/abc)/ます。$の最初の出現のみをに置き換えたいc:\。
私は次のように置き換えようとしました
st.Replace("$","c:\");
しかし、それは のすべての出現を置き換えました$。
最初に出現した文字のみを置き換えるロジックを教えてください。
使用する
find_first_of//文字列の最初の出現にイテレータを返します
その後
replace//最初の出現を指す反復子を置き換える
void SetAt( int nIndex, TCHAR ch );を使用して、1 文字だけを置き換えることができます。そして、int FindOneOf( LPCTSTR lpszCharSet ) const;$ の最初の出現を見つけます。
このような :
st.SetAt( st.FindOneOf( "$" ), "C:/");
Edward Clements からの受け入れられた回答をカプセル化する関数を次に示します。
int replaceFirstOf(CString& str, const LPCSTR pszOld, const LPCSTR pszNew)
{
int found = str.Find(pszOld);
if (found >= 0)
{
str.Delete(found, 1);
str.Insert(found, pszNew);
}
return found;
}