删除第一个和最后一个' X'字符数组中的字符

时间:2016-03-22 12:22:07

标签: c++ arrays string

我试图先删除' w'最后' w'从一个字符串。 我删除了第一个' w,但是无法删除最后一个,这是我的代码:

char str1[80], *pstr1, *pstr2;
cout << "Enter a String:\n";
gets_s(str1);
pstr1 = str1;
pstr2 = new char[strlen(str1)];
int n = strlen(str1) + 1, k = 0, i = 0;
bool s = true;
while (k < n+1)
{

    if (strncmp((pstr1 + k), "w", 1) != 0)
    {
        *(pstr2 + i) = *(pstr1 + k);
        i++;
        k++;
    }
    else if(s == true)
    {       
        k++;
        s = false;
    }
    else
    {
        *(pstr2 + i) = *(pstr1 + k);
        i++;
        k++;
    }
}

1 个答案:

答案 0 :(得分:3)

让您的生活变得轻松,并std::stringfind_first_offind_last_of使用erase

#include <string>

void erase_first_of(std::string& s, char c)
{
    auto pos = s.find_first_of(c);

    if (pos != std::string::npos)
    {
        s.erase(pos, 1);
    }
}

void erase_last_of(std::string& s, char c)
{
    auto pos = s.find_last_of(c);

    if (pos != std::string::npos)
    {
        s.erase(pos, 1);
    }
}

#include <iostream>

int main()
{
    std::string s = "hellow, worldw\n";

    erase_first_of(s, 'w');
    erase_last_of(s, 'w');

    std::cout << s;
}