Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
void two(string str, int *mstr,int l) //Замена цифр в строке
{
string base[10] = { "ноль","один","два","три","четыре","пять","шесть","семь","восемь","девять" }; //Строки для замены
int i,j,t;
for (i = 0;i < l;i++)
{
str.insert(mstr[i]+1, base[atoi(&str[mstr[i]])]); //Вставка после числа в строку
t = base[atoi(&str[mstr[i]])].length(); //Смещение последующих чисел в строке
str.erase(mstr[i], 1); //Удаление цифры в строке
for (j = i; j < l;j++) //Новые позиции чисел в строке
{
mstr[j] += t-1;
}
}
cout << "Изменённая строка: " << str << endl;
}
По заданию требовалось обработать символьную строку так, чтобы цифры записывались числительными. В этой функции идет замена цифр в строке. Массив str - строка символов, mstr - int массив, куда записывается позиция числа в строке (т.е в строке aaaa1aaa mstr[0]=4), а l - количество чисел в строке.
Код не мой. Это ад. Неработающий.
Сидел, ржал.
У меня ИВТ специальность, а не плюсник. Имхо, главное понимать алгоритм, а на него можно любой язык наплести, хоть brainfuck, хотя не отрицаю, что знать особенности языка, например функцию str_replace, через которую вы лаконично функцию сделали, бывает полезно. Тем более изучение "языка" в вузе происходит по большей части в полу-самостоятельном виде и ничто не мешает изучить другой язык самому, если есть желание.
Да понимаю, просто привычка любым ротоебам отвечать с натянутой вежливостью, даже если они откровенно байтят. На плюсах, кстати, тоже есть функция str_replace, правда не совсем так, как на пхп работает, пойду документацию почитаю лучше.
И чтоб отдельные спецкурсы по разгребанию шаблоноговна вперемешку с сишным препроцессором, нахождение там багов. Экзамен на понимание ошибки от компилятора, когда он высирает эту ошибку на тыщу строк.
Уныло, должно быть, сидеть над языком с затхлым амбре восьмидесятых, на котором невозможно с первого же дня начать разработку, который сначала надо учить, учить и учить, долго и муторно? Помню, PHP учить не пришлось вообще - сходу начинаешь разрабатывать проект, лишь периодически заглядывая в документацию, и течёшь от наслаждения.
Если там 2 цифры подряд, к примеру "11", то atoi вернёт 11 и будет вылет за границу массива base. Не надо так.
Можно просто base[str[mstr[i]] - '0'] раз мы уже знаем что там цифра
Вообще не понимаю тех, кто упорно сидит на C/C++ - откровенно НЕДОРАБОТАННОМ языке.
Там только по координатам замена, емнип.
А что, разве бывает специальность "программист на C++" ? Это ж примерно как специальность "откручиватель гаек".
* по языку
* по шаблонам
* по изучению стандарта.
какой сленг )))
нельзя завязываться
я за