ошибка C2664: в C ++? - PullRequest
       31

ошибка C2664: в C ++?

1 голос
/ 16 апреля 2009
for (int v = 0; v <= WordChosen.length();v++)
{
    if(Letter == WordChosen[v])
    {
        WordChosenDuplicate.replace(v,1,Letter);
    }
}

Я получаю эту ошибку

"Ошибка 4, ошибка C2664: «Станд :: basic_string <_Elem, _Traits, _Ax> & Станд :: basic_string <_Elem, _Traits, _Ax> :: заменить (__ w64 без знака int, __ w64 без знака int, const станд :: basic_string <_Elem, _Traits, _Ax> &) ': невозможно преобразовать параметр 3 из 'char' to 'const станд :: basic_string <_Elem, _Traits, _Ax> & 'c: \ документы и настройки \ main \ my документы \ уни \ второй year \ tp2 \ hangman \ hangman \ hangman.cpp 147 «

Я получил ошибку только после ввода этой строки в

WordChosenDuplicate.replace(v,1,Letter);

Ответы [ 4 ]

3 голосов
/ 16 апреля 2009

или

WordChosenDuplicate.replace(v,1,std::string(Letter, 1));
3 голосов
/ 16 апреля 2009

Параметры функции 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 голос
/ 16 апреля 2009

Кажется, что WordChosenDuplicate является std :: string, и в этом случае 3-й параметр в методе replace () должен быть другим std :: string или const char * в стиле c *. Вместо этого вы пытаетесь передать один символ («Письмо»). Ошибка говорит о том, что не существует версии replace (), которая принимает символ в качестве третьего параметра.

1 голос
/ 16 апреля 2009

Чего вы хотите достичь? Версия replace, которую вы пытаетесь вызвать, не существует - как говорит вам компилятор. Какую из этих версий вы имеете в виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...