как изменить строку (не массив символов), используя inbulit функции в C++ й я должен хранить оригинал, а также обращенные один так, чтобы я могу сравнить их для равенства. Пожалуйста, дайте мне знать, как это сделать.Как хранить обращенную строку с помощью встроенных обратного() функции в C++
ответ
#include <algorithm>
std::string str1("original");
std::string str2(str1);
std::reverse(str2.begin(), str2.end());
if(str1 == str2)...
Возьмите копию исходной строки, а затем использовать зЬй :: обратного INPLACE реверса копии. Затем вы можете сделать сравнение на двух.
Сделайте копию строки, а затем используйте обратную функцию из заголовка алгоритма.
std::string original;
// put data in the string
std::string reversed(original);
std::reverse(reversed.begin(), reverse.end());
Вы уверены, что это помогает OP или любому другому читателю. –
Хм, извините за то, что выбрал именно ваш ответ, теперь я вижу множество других тривиальных ответов. Я как-то ответил на вопрос о том, как изменить значение переменной, указав, что оператор присваивания '=' делает это. Это было главным образом иронией, но этот аспект был потерян для читателей, которые поддержали его как прекрасный ответ. В такие дни я почти отчаиваюсь. Люди просто перестали думать. –
На самом деле нет другого способа ответить на вопрос, заданный ОП. Они хотят использовать стандартную функцию и сохранить оригинал. Должен ли я объяснить это больше? – NathanOliver
std::reverse
работает на месте, поэтому если вы хотите сохранить как оригинал и обратные строки, вы должны сделать копию первой, а затем повернуть его вспять:
std::string original("foo");
std::string copy(original);
std::reverse(copy.begin(), copy.end());
Вы могли просто используйте функцию reverse()
в <algorithm>
.
std::string same("Hello world");
std::string reversed(same);
std::reverse(reversed.begin(),reversed.end());
//To compare them for equality..
if (same == reversed) {
...
}
Вам не нужно держать отдельную копию, вы можете получить доступ к строке в обратном порядке следующим образом:
string str = "Well Come";
for (unsigned i = str.size() - 1; i >= 0; i++)
cout << str.at(i);
** бесконечный цикл ** как 'i> = 0' всегда будет истинным, потому что' i' не имеет знака. – bolov
[[[Что вы пробовали? –