0

MS Visual Studio 2005 の Windows で Openipmp クライアントを実行しています。ドキュメントによると、Visual Studio 6 と MS Visual Studio .NET でのみテストされています。

DRMPlugin をコンパイルしているとき、1 つのコードでエラーが発生しました

error C2440: '<function-style-cast>' : cannot convert from 'const char *'
to 'std::_String_const_iterator<_Elem,_Traits,_Alloc>'
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>,
            _Alloc=std::allocator<char>
        ]
        No constructor could take the source type, or constructor overload resolution was    ambiguous

ここにコードがあります

bool OpenIPMPDOIContentInfoManager::ParseHostIPPort(const std::string& hostURL,
    std::string& hostIP, int& hostPort) {
  const char* colon = strchr(hostURL.data(), ':');
  if (colon == NULL) {
    return false;
  }
  hostIP = std::string(hostURL.begin(), std::string::const_iterator(colon));
  hostPort = atoi(++colon);
  return true;
}

コードの何が問題なのか誰か教えてください。

助けてください。

4

1 に答える 1

2
hostIP = std::string(hostURL.begin(), std::string::const_iterator(colon));

std::string::const_iterator文字へのポインターから を作成することはできません。strchrC スタイルの文字列関数と C++ スタイルを混在させようとするべきではありstd::stringません。を使用std::string::findして を見つけて:からstd::string::substr作成するhostIPか、std::find(アルゴリズム) を:使用して文字列内に反復子を取得し、現在のコンストラクターを使用します。

于 2012-05-04T13:26:18.883 に答える