字符串子串出o范围

时间:2015-05-17 17:43:02

标签: 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'},
        {'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;
}

如果你能帮助我,请帮助我。我正在使用Visual Studio 2010.提前感谢!

1 个答案:

答案 0 :(得分:0)

使用char []保存输出或使用output = output + string(1,char)将字符附加到输出字符串。

正如Luchian建议的那样,您需要非常小心地处理char [],这也需要对代码进行一些更改。请改用字符串。