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

-3 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;
}
Run Code Online (Sandbox Code Playgroud)

M.M*_*M.M 6

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

先添加:

output.resize( a.size() );
Run Code Online (Sandbox Code Playgroud)

还要考虑检查 if ( k.size() < a.size() ) throw .....