C++ mfc复制CString的某些部分

C++ mfc复制CString的某些部分,c++,mfc,stl,cstring,C++,Mfc,Stl,Cstring,假设我有一个CString变量,其中包含字符串“Bob Evans”。我想从位置4一直复制到原始CString的末尾到新的CString,但我很难找到这方面的语义示例: CString original("Bob Evans"); // Below is what I'm trying to do // CString newStr = original.copy(4, original.GetLength()); 我也曾想过将变量原始< /String >复制到STL C++字符串,但是在转

假设我有一个CString变量,其中包含字符串“Bob Evans”。我想从位置4一直复制到原始CString的末尾到新的CString,但我很难找到这方面的语义示例:

CString original("Bob Evans");
// Below is what I'm trying to do
// CString newStr = original.copy(4, original.GetLength());

我也曾想过将变量<强>原始< /String >复制到STL C++字符串,但是在转换方面实现这一点并不容易。你对此有什么建议?首先,我可以将字符串存储在STL字符串中,但这将是最后的手段之一,因为我不想为了将数据存储在STL字符串而不是CString中而重新构造大量代码。提前感谢。

CString
转换为标准字符串并不难;唯一的问题是,如果您采用MFC程序的默认设置,您可能正在使用Unicode。这意味着您将要使用
std::wstring
而不是
std::string

newStr = original.Mid(4);
我还没有测试过这个,但是我认为默认的转换会让这个“正常工作”。否则,将CString强制转换为LPCTSTR

std::wstring copyOfOriginal(original);

谢谢Mid功能对我来说非常有效。我觉得很尴尬,为什么微软把这个函数命名为Mid()。它们有.Left、.Mid和.Right,一旦你开始使用它们,它们就有意义了。