У меня есть это своеобразное требование, когда мне нужно удалить все пробелы перед конкретным символом, который является трубой '|'. Я написал тестовый код для него, который на самом деле печать правильный вывод, но дополнительно подарив мне файл ядра :(Удалите все пробелы перед символом в строке
Мой код ниже:
int main()
{
string line="1 2 |3 4| hbvhwf wjff wenf|hjbcwbfw ejwef efwk dfkwe|jsv |";
cout <<line<<endl;
string::iterator ite =(line.begin());
int counter=0;
int index=0;
int start=0;
while(ite != (line.end()))
{
if(*ite == '|' && counter > 0)
{
line.erase(start,counter);
counter=0;
cout<<line<<endl;
}
if(ite!=line.end())
{
if(isalnum(*ite))
{
counter=0;
}
if(*ite==' ')
{
if(!counter)
{
start=index;
}
counter++;
}
ite++;
index++;
}
}
cout<<line<<endl;
}
Я просто схожу с ума в поисках корня . причиной дамп Может кто-нибудь, пожалуйста, помогите ожидается выход:
1 2|3 4| hbvhwf wjff wenf|hjbcwbfw ejwef efwk dfkwe|jsv|
После того, как вы называете стереть на линии вам нужно сбросить итератор. – dwxw
Это должно быть сделано автоматически, я думаю. Я не хочу этого делать. Насколько я понимаю. – user1939168
@ user1939168 ['std :: string :: erase'] (http://en.cppreference.com/w/cpp/string/basic_string/erase) возвращает итератор. Вы должны назначить его 'ite' в своем коде. – rubenvb