错误C2664:在c ++中?

时间:2009-04-16 11:34:22

标签: c++ visual-c++

for (int v = 0; v <= WordChosen.length();v++)
{
    if(Letter == WordChosen[v])
    {
        WordChosenDuplicate.replace(v,1,Letter);
    }
}

我收到此错误

  

“错误4错误C2664:   “的std :: basic_string的&LT; _Elem,_Traits,_AX&GT;   &安培;性病:: basic_string的&LT; _Elem,_Traits,_AX&GT; ::替换(__ W64   unsigned int,__ w64 unsigned int,const   的std :: basic_string的&LT; _Elem,_Traits,_AX&GT;   &amp;)':无法转换参数3   'char'到'const   的std :: basic_string的&LT; _Elem,_Traits,_AX&GT;   &安培;” c:\ documents和settings \ main \ my   文件\单\第二   年\ tp2 \ hangman \ hangman \ hangman.cpp 147   “

将此行放入

后,我才收到错误
WordChosenDuplicate.replace(v,1,Letter);

4 个答案:

答案 0 :(得分: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 :(得分:3)

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

答案 2 :(得分:1)

你想要达到什么目的?您尝试调用的replace版本不存在 - 正如编译器告诉您的那样。您的意思是these versions中的哪一个?

答案 3 :(得分:1)

WordChosenDuplicate似乎是一个std :: string,在这种情况下,replace()方法中的第三个参数应该是另一个std :: string或c-style const char *。您正在尝试传递单个字符(“Letter”)。错误是说没有版本的replace()将char作为第三个参数。