2009-08-20 14 views
0

エラー::文字列&

それがconstのStdからパラメータ1を変換することができないことを私に伝えます::文字列をします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) 
{ 

} 

EDIT

もともと、私が望んでいたことは、forループ内のこれらの行私はもう少し説明するつもりだ、これは本当に混乱していることがわかり

...だった

ch = someFunction(*tok_iter); 
h += ch 

も* tok_iterがwstringのを返すことが期待されるIしかしように私はエラーを取得しました:はSTD :: wstringのをCONSTへのconstのstd ::文字列からパラメータ1を変換することはできません&

そのため、私は何とか* tok_iterがconst std :: stringであると仮定したので、変換を行うstringToWstring関数を作成しました。

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 

私はそれが今より明確に願っています。

+0

「太字部分」は何ですか? –

+0

エラーがconst文字列を文字列&に話している場合、stringをwstringに変換することについて質問しているのはなぜですか? – jalf

+0

2つのアスタリスクが付いている部分。コードブロックにない場合は太字になります。 – chaos

答えて

2

編集した質問を見ると、指定された行ではなく、boost/tokenizer.hppの中にエラーがあります。

あなたのトークナイザが間違っていると思います。 http://www.boost.org/doc/libs/1_34_0/libs/tokenizer/tokenizer.htmには3つのテンプレート引数があり、3番目の引数はデフォルトでstd::stringになります。テンプレートの種類のエラーをデバッグするとき、一般的に

tokenizer<boost::char_separator<wchar_t>, std::wstring::const_iterator, std::wstring> 

をで、出力ペインに見えるようにしてください:あなたはstd::wstring上でそれを使用したいので、私はあなたの代わりにこのようなあなたのトークナイザを作成する必要がありますでしょうねエラーの後の行。

Visual Studioは、あなたが二const std::_String_const_iterator<_Elem,_Traits,_Alloc> &からのエラーメッセージの最初のstd::_String_const_iterator<_Elem,_Traits,_Alloc>を区別することができ、あなたがテンプレートで使用される種類を教えてくれます(VC++本当にこの情報をフォーマットで非常に良いではありませんが、それはあります)ほとんどのおそらく、それらのうちの1つは_Elemに対してcharを持ち、もう1つはwchar_tです。

+0

ねえ、私は質問を編集しました、今はっきりしていることを願っています –

+0

ありがとうございました:) –

1

tokenizerイテレータは実際には文字列ではなくwstringを返すと思います。 stringToWstring関数内に文字列(参照)が必要です。

また、tokenizerのテンプレートタイプをwchar_tからcharに変更する必要があります。コードの文脈なしで正確に言えません...