私は持ってい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;
}