2015-02-05 1 views
0

как изменить строку (не массив символов), используя inbulit функции в C++ й я должен хранить оригинал, а также обращенные один так, чтобы я могу сравнить их для равенства. Пожалуйста, дайте мне знать, как это сделать.Как хранить обращенную строку с помощью встроенных обратного() функции в C++

+0

[[[Что вы пробовали? –

ответ

3
#include <algorithm> 

std::string str1("original"); 
std::string str2(str1); 
std::reverse(str2.begin(), str2.end()); 

if(str1 == str2)... 

Возьмите копию исходной строки, а затем использовать зЬй :: обратного INPLACE реверса копии. Затем вы можете сделать сравнение на двух.

0

Сделайте копию строки, а затем используйте обратную функцию из заголовка алгоритма.

std::string original; 
// put data in the string 
std::string reversed(original); 
std::reverse(reversed.begin(), reverse.end()); 
+0

Вы уверены, что это помогает OP или любому другому читателю. –

+0

Хм, извините за то, что выбрал именно ваш ответ, теперь я вижу множество других тривиальных ответов. Я как-то ответил на вопрос о том, как изменить значение переменной, указав, что оператор присваивания '=' делает это. Это было главным образом иронией, но этот аспект был потерян для читателей, которые поддержали его как прекрасный ответ. В такие дни я почти отчаиваюсь. Люди просто перестали думать. –

+0

На самом деле нет другого способа ответить на вопрос, заданный ОП. Они хотят использовать стандартную функцию и сохранить оригинал. Должен ли я объяснить это больше? – NathanOliver

0

std::reverse работает на месте, поэтому если вы хотите сохранить как оригинал и обратные строки, вы должны сделать копию первой, а затем повернуть его вспять:

std::string original("foo"); 
std::string copy(original); 
std::reverse(copy.begin(), copy.end()); 
0

Вы могли просто используйте функцию 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) { 
... 
} 
-2

Вам не нужно держать отдельную копию, вы можете получить доступ к строке в обратном порядке следующим образом:

string str = "Well Come"; 
for (unsigned i = str.size() - 1; i >= 0; i++) 
    cout << str.at(i); 
+2

** бесконечный цикл ** как 'i> = 0' всегда будет истинным, потому что' i' не имеет знака. – bolov

 Смежные вопросы

  • Нет связанных вопросов^_^