从 CString C++ 中删除特定行

Posted

技术标签:

【中文标题】从 CString C++ 中删除特定行【英文标题】:Remove Specific Line From 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++.

【问题讨论】:

提供一些带有示例的代码以及您尝试过的内容 【参考方案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);

【讨论】:

以上是关于从 CString C++ 中删除特定行的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中转换类型时出错

MFC C++ 使用静态成员和编译问题

从 C++ 字符串中删除最后一个字符

C++从string中删除所有的某个特定字符

将文本文件 C++ 从特定行解析到特定行

从备注字段的内容中删除特定行