【问题标题】:mfc copy certain sections of a CStringmfc 复制 CString 的某些部分
【发布时间】:2010-11-04 02:43:33
【问题描述】:

假设我有一个带有字符串“Bob Evans”的 CString 变量。我想从位置 4 复制到原始 CString 的末尾到一个新的 CString,但是我找不到为此的语义示例:

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

我也考虑过将变量 original 复制到 STL C++ 字符串,但是在转换方面实现这一点也不是那么容易。您对此有何建议?我可以先将字符串存储在 STL 字符串中,但这将是最后的手段之一,因为我不想重组大量代码只是为了将数据存储在 STL 字符串而不是 CString 中。提前致谢。

【问题讨论】:

    标签: c++ mfc stl cstring


    【解决方案1】:
    newStr = original.Mid(4);
    

    【讨论】:

    • 谢谢。 Mid 功能对我来说效果很好。我很尴尬,为什么微软将这个函数命名为 Mid()。
    • 它们有 .Left、.Mid 和 .Right - 一旦你开始使用它们就有意义了。
    【解决方案2】:

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

    我还没有对此进行测试,但我认为默认转换会让它“正常工作”。否则将 CString 转换为 LPCTSTR。

    std::wstring copyOfOriginal(original);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-09
      • 2019-10-19
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多