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;
}

}

但是当我尝试显示向量的元素时,我只得到了第一个数组元素两次,而数组的第二个元素位于位置 3。我不明白为什么会发生这种情况。

4

2 回答 2

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 回答
0
URLvector.assign(URLpolicy,URLpolicy+noURL) ;

可用于将字符串数组传递给向量。

于 2012-06-06T09:34:44.170 回答