C++ 字符串子串输出o范围
我对这个代码有问题。我读了一些关于它的问题,但我在代码中找不到问题C++ 字符串子串输出o范围,c++,C++,我对这个代码有问题。我读了一些关于它的问题,但我在代码中找不到问题 string Mansfildenc(string input){ string output; char tab[5][5] = { {'a', 'b', 'c', 'd', 'e'}, {'f', 'g', 'h', 'i', 'k'}, {'l', 'm', 'n', 'o', 'p'}, {'q', 'r', 's', 't', 'u'},
string Mansfildenc(string input){
string output;
char tab[5][5] = {
{'a', 'b', 'c', 'd', 'e'},
{'f', 'g', 'h', 'i', 'k'},
{'l', 'm', 'n', 'o', 'p'},
{'q', 'r', 's', 't', 'u'},
{'v', 'w', 'x', 'y', 'z'}};
char tab2[5]={'A','E','I','O','U'};
int j=0,i;
char c;
int gasit;
int lin,col;
for(i=0;i<input.length();i++){
c=tolower(input[i]);
if(isalpha(c)){
if(c=='j'){
output[j]='E';
j++;
output[j]='O';
j++;
}
else{
gasit=0;
for(lin=0;lin<5;lin++){
for(col=0;col<5;col++)
if(tab[lin][col]==c){
gasit=1;
break;
}
if(gasit==1) break;
}
output[j]=tab2[lin];
j++;
output[j]=tab2[col];
j++;
}
}
else{
output[j]=c;
j++;
}
}
return output;
}
string Mansfildenc(字符串输入){
字符串输出;
字符选项卡[5][5]={
{'a','b','c','d','e'},
{'f','g','h','i','k'},
{'l','m','n','o','p'},
{'q','r','s','t','u'},
{'v','w','x','y','z'};
char tab2[5]={'A','E','I','O','U'};
int j=0,i;
字符c;
int gasit;
林林涛,;
对于(i=0;i使用char[]保存输出,或者使用output=output+string(1,char)将字符附加到输出字符串
正如Luchian所建议的,您需要非常小心地处理char[],这也需要对代码进行一些更改。请改用string。output
是一个空字符串。在这种情况下,output[j]
对于j
的任何值都无效。请重试本地char[]< /代码>将导致未定义的行为。我没有建议他返回字符[]。返回字符串(char)是安全的。为什么不使用惯用的C++?为什么不使用代码>字符串< /代码>?我确实建议他可以使用“或者使用输出=输出+字符串(1,char)”。