【发布时间】:2024-07-17 01:30:02
【问题描述】:
我在 Visual Studio 中不断收到 C2664 转换错误
它告诉我它不能将参数 1 从 const std::string 转换为 std::string&。我尝试在 stringToWstring 原型和函数本身中添加/删除 const,但仍然出现错误。
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)
{
}
有什么想法吗?
编辑:
我知道这真的很令人困惑,所以我将解释更多..
最初,我想要的是 for 循环中的这些行
ch = someFunction(*tok_iter);
h += ch
我还希望 *tok_iter 返回一个 wstring,但我收到如下错误:cannot convert parameter 1 from const std::string to 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
我希望现在更清楚了。
【问题讨论】:
-
如果错误是关于 const string to string&,你为什么要问关于将 string 转换为 wstring 的问题?
-
带有双星号的部分,如果它不在代码块中,则会加粗。
-
@jalf 啊,我问了关于将字符串转换为 wstring 的问题,因为函数给出了错误,我应该更具体一些
-
hexval是如何定义的? -
老实说,它仍然非常令人困惑。你可以编辑问题,特别是让代码看起来完全像你试图编译的那样,错误消息是_exactly _你得到什么?
标签: c++ visual-c++