так что я работаю над небольшим программным обеспечением теперь и им застрял. У меня естьУдалить текст между двумя символами
const char *dvar_hostname;
и я пишу слово на этом массиве символов, f.e.
"[12]1234" or "1234"
так что теперь я должен проверить, если слово я написал на этом полукокса * содержит [и], а если так удалить скобки и текст в ней, так
"[12]1234"
становится
"1234"
он должен быть записан на const char * в конце снова (так что я думаю, вам нужно будет использовать временную строку). Я пытался что-то вроде этого:
dvar_hostname = "[12]1234";
string host = string(dvar_hostname);
if(host.substr(1) == "[")
{
string str = string(dvar_hostname);
unsigned first = str.find("]");
unsigned last = str.find("[");
string newString = str.substr (first,last-first);
const char *tempHostName = newString.c_str();
}
, но это не получилось так, как я хотел тоже, так что любая помощь очень ценится :)
EDIT:
if(strcmp(dvar_hostname2, Dvar_GetString("sv_hostname")))
{
dvar_hostname2 = Dvar_GetString("sv_hostname");
dvar_hostname1 = Dvar_GetString("sv_hostname");
printf("sv_hostname[w/ Clantag]: %s\n", dvar_hostname1);
bool open_bracket = true;
bool end = false;
size_t pos_open = 0;
size_t pos_close = 0;
string dh(dvar_hostname1);//get string value
while(!end){
pos_open = dh.find('[');
pos_close = dh.find(']');
if(pos_open == string::npos || pos_close == string::npos || pos_close < pos_open){
end = true;
}else{
dh.erase(pos_open, pos_close - pos_open + 1);
}
}
dvar_hostname1 = dh.c_str();
printf("sv_hostname[w/o Clantag]: %s\n", dvar_hostname1);
}
это печатает: "sv_hostname [ж/Clantag]: [{TM}] Твена" и "sv_hostname [ш/о Clantag]:" Твен, кстати dvar_hostname1 & 2 представляют собой стенд Const символ * затем в других местах им делать это:
if(!strcmp(Player(Client).getGT(), dvar_hostname1)
// Player (Client) .getGT() возвращает «Twain» в этом случае ... любая идея, почему он не продолжает код после этого оператора if?
Если вы используете C++ 11, 'зЬй :: regex_replace (хост, станд :: регулярное выражение, "") ' – Praveen
@Praveen no i'm not sry :( – SyxDuLappen
* t необходимо записать на const char * в конце снова * - Зачем вам« нужна »эта« необходимость »? Вы меняете string, поэтому в чем причина этого требования? – PaulMcKenzie