С++ удаляет определенный символ из строки

Я нахожусь в процессе создания инструмента Rcon для вызова долга Modern Warfare 2. Когда я получаю информацию о сервере, он использует цвета с цветовыми кодами ^ 1 = красный ^ 2 = зеленый и т.д., В основном то, что я хочу сделать, это удалить ^ 'Number' из строки ^ может ли кто-нибудь сказать мне, как удалить эти символы из системной строки? я хотел бы сделать что-то простое:

for(int i=0;i<9;i++)
{
 if(char=="^" + i)
 {
 string ^servernamme -= char;
 }
}
4 ответа

Просто используйте методы 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;


Если вы пытаетесь сделать это, не используя std :: string, я бы предположил, что у вас есть строка, объявленная как 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
 }
 }

Я надеюсь, что вы ищите.


Попробуй это:

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

То есть, переместите '^' до конца и измените размер, чтобы обрезать их.


если это все последние два символа, которые вы хотите удалить, вы можете просто использовать:

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

licensed under cc by-sa 3.0 with attribution.