如何使用c ++从字符串的末尾删除撇号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用c ++从字符串的末尾删除撇号相关的知识,希望对你有一定的参考价值。

我在从字符串中删除第一个和最后一个撇号时遇到了一些麻烦。我有一个字符串向量,其中一些在字符串的开头或结尾都有撇号。例如,我有'cause,'til,holdin',not我想要这样的输出原因,直到,保持,不要我该怎么做?

答案

我想出了以下实现,它涵盖了空的输入场景,而没有调用任何未定义的行为。

#include <vector>
#include <string>
#include <iostream>
#include <algorithm>

std::vector<std::string> contents = "'cause", "'til", "holdin'", "don't", "";

void impl1() 
    for(auto & content:contents)
        if(!content.empty() && (*content.begin()) == '\'')
            content.erase(content.begin());
        

        if(!content.empty() && content.back() == '\'')
            content.pop_back();
        

        std::cout << content << " " << std::endl;
    


void impl2()
    auto erase_if = [](auto& container, auto&& itr, auto val)
        if(!(itr == std::end(container)) && ((*itr) == val))
            container.erase(itr);
          
    ;   
    for(auto & content: contents)
        erase_if(content, content.begin(), '\'');
        erase_if(content, std::string::iterator&content.back(), '\'');

        // print trimmed output
        std::cout << content << " " << std::endl;
    



int main(void)
    //impl1();
    impl2();
    return 0;

另一答案

您使用.erase()成员函数从字符串中删除字符。示例:

.erase()

以上是关于如何使用c ++从字符串的末尾删除撇号的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sed 删除文件的最后 n 行

如何使用 Objective C iOS 从 iPhone X 中的表格视图顶部删除多余的空间

如何使用 C#4.0 从 xml 内容中删除特定的 xml 元素?

Xamarin/SQLite/C# - 如何使用菜单项删除从列表视图和 SQLite 表中删除一行

无法弄清楚如何通过仅使用类的函数删除整个链接列表

如何使用telerik radgridview C#中的复选框从数据库中删除记录