7

私は持っていCString st= $/Abc/cda/($/dba/abc)/ます。$の最初の出現のみをに置き換えたいc:\

私は次のように置き換えようとしました

st.Replace("$","c:\");

しかし、それは のすべての出現を置き換えました$

最初に出現した文字のみを置き換えるロジックを教えてください。

4

4 に答える 4

2

使用する

find_first_of//文字列の最初の出現にイテレータを返します

その後

replace//最初の出現を指す反復子を置き換える

于 2013-06-19T06:46:34.283 に答える
0

void SetAt( int nIndex, TCHAR ch );を使用して、1 文字だけを置き換えることができます。そして、int FindOneOf( LPCTSTR lpszCharSet ) const;$ の最初の出現を見つけます。

このような :

st.SetAt( st.FindOneOf( "$" ), "C:/");
于 2013-06-19T06:50:31.343 に答える
0

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;
}
于 2017-02-16T20:22:49.460 に答える