0

次のように、文字列の配列をベクトルにプッシュしようとしています。

 string []URL = {"www.facebook.com","www.orkut.com","www.yahoo.com"};
 Int32 result = URL.Length;
 SetPolicyURL( URL,result);

 SetPolicyURL( char * URLpolicy[], __int32 noURL)
 {
__int32 i  = 0;

while ( i< noURL)
{
    char buf[2512] = {0};

    URLvector.push_back(URLpolicy[i]);
    sprintf( buf," noURL = %d URLpolicy[%d] = %s  URLvector[%d] = %s", noURL,  i,URLpolicy[i] ,i, URLvector.at(i).c_str());


    MessageBoxA(NULL, buf , 0, MB_ICONERROR);

    ++i;
}

}

しかし、ベクトルの要素を表示しようとすると、最初の配列要素が 2 回しか取得されず、配列の 2 番目の要素が 3 番目の位置に表示されます。なぜこれが起こっているのかわかりません。

4

2 に答える 2

0
URLvector.assign(URLpolicy,URLpolicy+noURL) ;

文字列の配列をベクトルに渡すために使用できます。

于 2012-06-06T09:34:44.170 に答える
0

次のコードは、ループなしで必要なことを行う必要があります。C++ では、ベクトルの反復子であるかのように配列を挿入できます。この方法はそれほど複雑ではなく、エラーが発生しやすくなっています。

URLvector.insert(URLpolicy, URLpolicy+noURL );

も変わる

SetPolicyURL( char * URLpolicy[], __int32 noURL);

SetPolicyURL( string[] URLpolicy, __int32 noURL);

Achar *[]は a と同じではありませんstring[]。それが元の問題の原因です。

于 2012-05-04T05:54:06.233 に答える