Здравствуйте, я действительно новичок в C++, но ранее программировался в JS и PHP. Я хочу обратить вспять строку, единственными методами, которые я могу использовать, являются length()
и at()
.для сокращения цикла не работает
У меня уже есть решение, но есть что-то, что я хочу изменить, но C++ фактически не делает то, что я хочу на самом деле.
Фактическое решение:
getline(cin, user_input);
string inverted_user_input = "";
int user_input_length = user_input.length() - 1;
for (int i = user_input_length; i > -1; i--) {
inverted_user_input += user_input.at(i);
}
cout << "The reverse string is: " << inverted_user_input << endl;
Что я хочу сделать:
getline(cin, user_input);
string inverted_user_input = "";
int user_input_length = user_input.length();
for (int i = user_input_length; i > -1; --i) {
inverted_user_input += user_input.at(i);
}
cout << "The reverse string is: " << inverted_user_input << endl;
Мой первый рабочий раствор хорошо, но я хочу сделать это выглядит симпатичнее.
Я уже знаю, что length()
начинает отсчитывать на 1. Вот почему я получаю его по 1 на мой первый код. Но я хочу использовать --i
вместо i--
, чтобы избежать уродливого - 1, как в первом коде.
Я получаю подсказку, что что-то подает, и я проверил i
в первом цикле, но он не уменьшается. Зачем?
_ «единственные методы, которые я могу использовать в длину() и в()» _ Упс! Вы тоже используете '+'. По моему чтению задачи, вполне вероятно, что вы должны менять символы на месте. –
Разница между '--i' и' i - 'на самом деле не имеет значения в приращении цикла' for'. Это имеет значение только где-то вроде 'a [i -]' vs. 'a [- i]'. Инкремент запускается после цикла независимо от того, является ли это '--i' и' i - '. –
- i означает уменьшение i на 1 и возвращение результата. i-- означает возврат i, затем уменьшите его на один ... Я оставляю вас, чтобы понять, почему это имеет значение. – UKMonkey