0

文字列を文字列REPLACEに置き換える関数を作成しようとしています。紙の上で関数をドライ実行しているときは、すべて問題ないように見えますが、実行中には正しい出力が得られません。コードは次のとおりです。givenrequired

string REPLACE(string src,string reqd,string given)
{
    int i,j,k;
    int pos = FIND(src,given);
    if(pos==-1)
        return "";
    else
    {
        char *arr = new char[src.length()+reqd.length()-given.length()];  // creating the array that will hold the modified string
        for(i=0;i<pos;i++)
            arr[i] = src[i];     // copying the initial part of the string
        for(i=pos,j=0;i<pos+reqd.length()+1&&j<reqd.length();i++,j++)
            arr[i] = reqd[j];    // copying the required string into array
        for(i=pos+reqd.length()+1,k=0;i<sizeof(arr);i++,k++)
            arr[i] = src[pos+given.length()+k];   // copying the remaining part of source string into the array
        return arr;
    }   
}

これも私FINDが書いたもので、多くの場合にテストされています。にエラーは見られませんFIND

4

3 に答える 3

1

std::string と char 配列を混在させるのは良い考えではないと思います。以下が機能するはずです:

string REPLACE(string src,string reqd,string given)
{
    int pos = FIND(src,given);

    src.replace( pos, given.size(), reqd );
    return src;    
}
于 2013-09-02T15:29:32.933 に答える