我想将一个字符串数组推送到一个向量,如下所示:
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位。我不知道为什么会发生这种情况。
答案 0 :(得分:0)
以下代码应该在没有循环的情况下执行您想要的操作。 C ++允许您插入一个数组,就好像它是向量的迭代器一样。这种方法不太复杂,容易出错。
URLvector.insert(URLpolicy, URLpolicy+noURL );
也改变了
SetPolicyURL( char * URLpolicy[], __int32 noURL);
到
SetPolicyURL( string[] URLpolicy, __int32 noURL);
char *[]
与string[]
不同。这是造成原始问题的原因。
答案 1 :(得分:0)
URLvector.assign(URLpolicy,URLpolicy+noURL) ;
可用于将字符串数组传递给向量。