【问题标题】:Remove Specific Line From CString C++从 CString C++ 中删除特定行
【发布时间】:2014-03-20 09:25:38
【问题描述】:

如何从CString 中删除特定行?此行包含:“要删除的行”。

例如输入为:

Remove Specific'\n'
Line to remove'\n'
Line From '\n'
CString C++.

输出应该是:

Remove Specific'\n'
Line From '\n'
CString C++.

【问题讨论】:

  • 提供一些带有示例的代码以及您尝试过的内容

标签: c++ visual-c++ mfc cstring


【解决方案1】:

尝试 CString.Replace 方法找到“要删除的行”并替换为 NULL。

查看MSDN

【讨论】:

  • 你真的不想将NULL 传递给Replace
  • 是的,但是输入字符串在单个字符串对象中存储了多行。在最初的问题中以“要删除的行”为例,因此在我的评论中提到了它。
  • 是的,我编辑了我的评论; OP 不是很清楚他真正想要什么 :) 但你仍然不应该传递 NULL。
【解决方案2】:

您需要将内容逐行复制到除要删除的行之外的其他新字符串,然后再次将新字符串复制到旧字符串中。

【讨论】:

    【解决方案3】:

    感谢每一位, 这样做的方法就像 Heena Goyal 说的那样

    CString oldString = _T("Remove Specific'\n' Line to remove'\n' Line From '\n' CString C++.");
        CString auxString ;
        CString newString =_T("");
    
        for (int i = 0; i < oldString.GetLength(); i++)
        {
            if (oldString[i] == '\n' || i == oldString.GetLength()-1)
            {
                if( i == oldString.GetLength() - 1)
                    auxString += oldString[i];
    
                if(auxString.Find("Line to remove") == -1)
                {
                    newString += auxString +'\n';
                }
                auxString = _T("");
            }
            else
            {
                if (oldString[i] != '\r')
                    auxString += oldString[i];
            }
        }
        newString = newString.Left(newString.GetLength() -1);
    

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多