2009-04-16 50 views
1
for (int v = 0; v <= WordChosen.length();v++) 
{ 
    if(Letter == WordChosen[v]) 
    { 
     WordChosenDuplicate.replace(v,1,Letter); 
    } 
} 

私はこのエラーエラーC2664:C++で?

「エラー4エラーC2664取得: 「のstd ::のbasic_string < _Elem、_Traits、_Ax> &のstd ::のbasic_string < _Elem、_Traits、_Axを> ::置き換えます(__w64 unsigned int型、__ W64 unsigned int型、constの のstd :: < _Elem、_Traits、_Ax> &をのbasic_string) ': からパラメータ3を変換することはできません 'のconst STD' から' 文字:: < _Elemをのbasic_string 、_Traitsは、_Ax> & 'はC:\ DocumentsとSettings \の主は私の 文書を\ \ユニ\第二 年\ TP2 \絞首刑執行人\絞首刑執行人の\ hangman.cpp 147 「

私だけだエラーこの行を入れた後

WordChosenDuplicate.replace(v,1,Letter); 
+1

より多くのコードを表示してください - 特にWordChosen、WordChosenDuplicateと手紙の定義を示しています。 –

+0

助けてくれてありがとう – user91566

答えて

3

それとも

WordChosenDuplicate.replace(v,1,std::string(Letter, 1)); 
1

達成したいことは何ですか?コンパイラがあなたに指示しているように、呼び出ししようとしているreplaceのバージョンが存在しません。 these versionsのどちらを意味しますか?

+0

私はこの本を読んでいて、 "str1.replace(m、n、str2)とParamers mとnはstring :: size_typeの型です" – user91566

+0

3番目の引数は ' ( 'char'ではなく)' string'です。 –

3

std::string::replace()関数のパラメータが正しくないか、replaceの異なるオーバーロードを呼び出す必要があります。何かのように:

WordChosenDuplicate.replace(v, // substring begining at index v 
          1, // of length 1 
          1, // replace by 1 copy of 
          Letter); // character Letter 
1

WordChosenDuplicateは、replace()メソッドは、別のstd ::文字列またはc-スタイルのconst char型であるべき場合には3番目のパラメータのstd ::文字列、*であることが表示されます。代わりに単一の文字( "文字")を渡そうとしています。エラーは、3番目のパラメータとしてcharを取るreplace()のバージョンがないということです。

関連する問題