异或两个字符串输出空字符串

时间:2014-07-27 00:27:02

标签: c++ string char

违规代码

string foo(string a, string k) {
   string output;

   for (int i = 0; i < a.size(); i++) {
      output[i] = a[i] ^ k[i]; 
   }

   return output;
}

1 个答案:

答案 0 :(得分:6)

string output;创建一个空字符串。 Going output[i]导致访问超出字符串边界的未定义行为。

先加入:

output.resize( a.size() );

另请考虑检查if ( k.size() < a.size() ) throw .....