了解使用^ =反转字符串的C ++函数

时间:2019-01-27 19:05:44

标签: c++ string bitwise-operators

下面的代码返回一个反向字符串。例如,它接受输入“ codebyte”并返回“ etybedoc”。

string FirstReverse(string str) {
    for(int i = 0, j = str.length() - 1; i < str.length() / 2; i++, j--)
    {
        str[i]^=str[j]^=str[i]^=str[j];
    }
    return str;
}

我对该功能的工作方式一无所知:

  1. 为什么使用^=运算符?它是按位运算符,但是为什么在这里使用它?
  2. 为什么str.length()在for循环中被2除?
  3. str[i]str[j]的变化是什么?

我想使用它来处理值,但是我不知道从哪里开始。我使用的入门教科书没有涵盖这一点。

1 个答案:

答案 0 :(得分:2)

作为答案:

  • 这是一种交换功能,类似于著名的比特混乱技术。
    • 可以在here中找到有关此交换机制的详细说明。
  • 该长度除以2,因为否则您将撤消每次交换并再次以原始字符串结尾。
  • 索引ij彼此相对(分别从开头或结尾开始)。