如何只替换CString中第一次出现的字符?

时间:2013-06-19 06:43:10

标签: c++ visual-c++ stl mfc

我有CString st= $/Abc/cda/($/dba/abc)/。我想仅将第一次出现的$替换为c:\

我试图替换为

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

但它取代了所有$

请你建议我只替换第一次出现的角色。

4 个答案:

答案 0 :(得分:5)

由于您要将单个字符替换为三个字符,因此您可以使用CString::Find(),然后使用CString::Delete()CString::Insert(),例如

int nInx = st.Find('$');
if (nInx >= 0)
{    st.Delete(nInx, 1);
     st.Insert(nInx, _T("C:\\");
}

答案 1 :(得分:0)

使用

find_first_of //将迭代器返回到第一次出现的字符串

然后

replace //替换指向第一次出现的迭代器

答案 2 :(得分:0)

您可以使用void SetAt( int nIndex, TCHAR ch );替换一个字符。 然后int FindOneOf( LPCTSTR lpszCharSet ) const;找到第一次出现$。

像这样:

st.SetAt( st.FindOneOf( "$" ), "C:/");

答案 3 :(得分:0)

这是一个函数,它封装了Edward Clements接受的答案:

struct { STUDENT_T* pSearch=pHead; };