In which case, would you expect
cs1 = m_sRootURL.Left(10);
s1 = (LPCTSTR)cs1;
cs1 = m_sRootURL.Mid(10,10);
s1 += (LPCTSTR)cs1;
to work?
The first call is fine, the second junks the <string>.
If the <string> is initailzed correcly {as in string("")}. the junking takes the form of...