为什么小弟我不能成功替换

为什么我不能成功替换?

#include <iostream>
#include <string>
using namespace std;
int replace();
char array[2][10];
int init()
{
char array[2][10] = { { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' }, { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' } };
return 0;
}
int main()
{
init();
replace();
return 0;
}
int replace()
{
string str;
cin >> str;
//getline(cin, str);
for (int i = 0; i < 10; i++)
{
size_t n = str.find(array[0][i]);
if (n != string::npos)
{
str[n] = array[1][i];
}
}
cout << str << endl;
return 0;
}

------解决方案--------------------
int init()
{
    char array[2][10] = { { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' }, { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' } };
    return 0;

红色的,你是在函数内重新定义了一个数组。
把char去掉,去掉后就不是初始化,这样赋值会出错。
你加一个这样的init函数简直就是多此一举。
直接把这函数代码提取出来,把函数删掉
------解决方案--------------------
建议把另一个函数也去掉,也把内容放到main里,
函数不是这么用的
------解决方案--------------------
大括号的赋值法只适用于初始化,如果是已声明后赋值,那就只能一个一个赋值了。
比如:
array[0][0]='a';
array[0][1]='b';
...