4

如何使用c++中的inblit 函数来反转字符串(不是字符数组)。我需要存储原始副本以及反转的副本,以便我可以比较它们是否相等。请让我知道如何做到这一点

4

5 回答 5

6
#include <algorithm>

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

if(str1 == str2)...

获取原始字符串的副本,然后使用 std::reverse 就地反转副本。然后,您可以对两者进行比较。

于 2015-02-05T13:49:56.940 回答
0

制作字符串的副本,然后使用算法头中的 reverse 函数。

std::string original;
// put data in  the string
std::string reversed(original);
std::reverse(reversed.begin(), reverse.end());
于 2015-02-05T13:48:43.413 回答
0

std::reverse就地操作,所以如果你想保留原始字符串和反转字符串,你必须先复制,然后再反转它:

std::string original("foo");
std::string copy(original);
std::reverse(copy.begin(), copy.end());
于 2015-02-05T13:49:04.123 回答
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) {
...
}
于 2015-02-05T13:49:48.073 回答
-3

您不需要保留单独的副本,您可以按相反的顺序访问字符串,如下所示:

string str = "Well Come";
for (unsigned i = str.size() - 1; i >= 0; i++)
    cout << str.at(i);
于 2015-02-05T13:57:38.503 回答