我做了几遍,都是复制整个子符串。
真奇怪。
CString Drive;
Drive.GetBuffer(3);
Drive.Format("%s",m_Dir.Left(m_Dir.Find(":",1)+1));
TRACE("Drive=%s\n\r",Drive);
真奇怪。
CString Drive;
Drive.GetBuffer(3);
Drive.Format("%s",m_Dir.Left(m_Dir.Find(":",1)+1));
TRACE("Drive=%s\n\r",Drive);
Drive = m_Dir.Left(m_Dir.Find(":",1)+1);
TRACE("Drive=%s\n\r",Drive);
str1 = _T("abcdefg");
str2 = str1.Left(2);
str2值为"ab"
Drive.GetBuffer(3); //这是什么意思?
Drive.Format("%s",m_Dir.Left(m_Dir.Find(":",1)+1));
TRACE("Drive=%s\n\r",Drive);==========================================CString Drive;
Drive.Format("%s",(LPCTSTR)m_Dir.Left(m_Dir.Find(":",1)+1));
TRACE("Drive=%s\n\r",(LPCTSTR)Drive);
赋值给其他CString变量后,就把整个子符串复制过去了。
Left没有任何作用。
不信试试看。
strcpy(Drive,(LPCTSTR)m_Dir.Left(3));
Drive[3]='\0';
CString str = m_Dir.Left(3);
memcpy(Drive,(LPCTSTR)str, 3 );
Drive[3]='\0';
strcpy(Drive, m_Dir.Left(3));
Drive[3]='\0';
一般推荐用memcpy