我有CString st= $/Abc/cda/($/dba/abc)/
。我想仅将第一次出现的$
替换为c:\
。
我试图替换为
st.Replace("$","c:\");
但它取代了所有$
。
请你建议我只替换第一次出现的角色。
答案 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; };