Я получаю ошибку преобразования C2664 в visual studio
Он говорит мне, что не может преобразовать параметр 1 из const std :: string в std :: string &. Я попытался добавить / удалить const в прототипе stringToWstring и в самой функции, и ошибка все еще появляется.
wstring hexval = buff.substr(buff.find(L"hex(2):"));
wstring h;
wchar_t ch;
typedef boost::tokenizer<boost::char_separator<wchar_t> > tokenizer;
boost::char_separator<wchar_t> sep(L"//,");
tokenizer tokens(hexval, sep);
for(tokenizer::iterator tok_iter = tokens.begin(); tok_iter != tokens.end(); tok_iter++)
{
ch = someFunction(*tok_iter); //error here
h += ch;
}
wstring stringToWstring(const string& s)
{
wstring temp(s.length(), L'');
copy(s.begin(), s.end(), temp.begin());
return temp;
}
wchar_t someFunction(const wstring &hex_val)
{
}
Есть идеи?
EDIT:
Я вижу, что это действительно сбивает с толку, поэтому я собираюсь объяснить немного подробнее ..
Изначально я хотел, чтобы эти строки были внутри цикла for
ch = someFunction(*tok_iter);
h += ch
Я также ожидал, что * tok_iter вернет строку wstring, но я получаю сообщение об ошибке: не может преобразовать параметр 1 из const std :: string в const std :: wstring &
Из-за этого я предположил, что каким-то образом * tok_iter является const std :: string, поэтому я создал функцию stringToWstring для выполнения преобразования. Для этого в цикле for
ch = someFunction(stringToWstring(*tok_iter));
h += ch
Когда я это сделал, я получил:
Error 1 error C2664: 'std::_String_const_iterator<_Elem,_Traits,_Alloc>::_String_const_iterator(const std::_String_const_iterator<_Elem,_Traits,_Alloc> &)' : cannot convert parameter 1 from 'std::_String_const_iterator<_Elem,_Traits,_Alloc>' to 'const std::_String_const_iterator<_Elem,_Traits,_Alloc> &' c:\program files\boost\boost_1_39\boost\tokenizer.hpp 63
Надеюсь, теперь стало понятнее.