C ++从字符串中删除某些字符

时间:2014-07-11 12:53:52

标签: c++

我正在制作一个Rcon工具,用于使命召唤现代战争2。 当我获得服务器信息时,它使用颜色代码的颜色^ 1 =红色^ 2 =绿色等等,基本上我想要做的就是删除^'数字'从字符串^可以有人告诉我如何从系统字符串中删除这些字符? 我喜欢这样简单的事情:

for(int i=0;i<9;i++)
{
    if(char=="^" + i)
    {
        string ^servernamme -= char;
    }
}

4 个答案:

答案 0 :(得分:1)

只需使用std::string的方法,例如:

size_t start = 0;
for (size_t pos = str.find('^', start); pos != std:npos; pos = str.find('^', start))
    if (str.find_first_of("0123456789", pos) == pos + 1)
        str.erase(pos, 2);
    else
        start = pos + 1;

答案 1 :(得分:0)

它总是你要删除的最后两个字符,你可以使用:

string result = theString.substr(0, theString.size()-1);

答案 2 :(得分:0)

试试这个:

str.resize(std::distance(str.begin(), std::remove(str.begin(), str.end(), '^')));

也就是说,将'^'移到最后并调整大小以修剪它们。

答案 3 :(得分:0)

如果你在不使用std :: string的情况下尝试这样做,那么我假设你将theString声明为char []或char *。

然后你可以这样做:

 for(int i = 0; strlen(theString) > i; ++i)
 {
   if (theString[i] == '^' && isdigit(theString[i+1]))
   {
     strcpy(theString+i, theString+i+2);
     --i; // decrement loop index so we won't miss any bytes
   }
 }

我希望这就是你要找的东西。