我有问题将下一个代码从c转换为c ++:
我有一个函数,它将一个移动序列数组(字符序列从a到i)作为arg.
码:
void mkmove(char** move) {
int i = 0;
char* p = NULL;
int moves[9][9];
for(int i = 0; i < 9; i++) {
for(p = move[i]; *p; p++) {
moves[i][*p - 'a'] = 3;
}
}
}
int main() {
char* movestr[] = {"abde", "abc", "bcef", "adg", "bdefh", "cfi", "degh", "ghi", "efhi"};
mkmove(movestr);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
gcc编译该代码很好,但如果我尝试用g ++编译它,它会给我下一个警告:
main.cpp:17:39:警告:不推荐将字符串常量转换为'char*'[-Wwrite-strings]
我相信这个警告来自C中的字符串定义为char [],而c ++使用std :: string.
所以我尝试将代码替换为使用C++字符串,如下所示:
void mkmove(std::string* move) {
Run Code Online (Sandbox Code Playgroud)
在mkmove函数defenition中,和:
std::string* movestr = {'abde', "abc", "bcef", "adg", …Run Code Online (Sandbox Code Playgroud)