矢量字符串,int和dword麻烦

时间:2017-01-19 14:02:08

标签: c++

所以我创造了一些东西,我遇到了一个非常大的问题。

vector<DWORD> GetChildren(int instance) {
   try {
       vector<DWORD> rtn;
       DWORD num4 = *(DWORD *)(*(DWORD *)(instance + 0x2C));
       DWORD num3 = *(DWORD *)(*(DWORD *)(instance + 0x2C) + 4);
       while (num4 != num3) {
         rtn.push_back(*(DWORD*)num4);
         num4 += 8;
       }
       return rtn;
   }
   catch (exception)
   {
      Sleep(1);
   }
   vector<DWORD> rtnn;
   return rtnn;
}

vector<DWORD> Children = GetChildren(Workspace);

rblua_getglobal(lua::lua_State, "print");
rblua_pushstring(lua::lua_State, Children);
rblua_pcall(lua::lua_State, 1, 0, 0);

我不知道如何将矢量转换为std :: string或const char。请帮忙

1 个答案:

答案 0 :(得分:1)

正如@Gill Bates所指出的那样DWORD实际上只是一个无符号的int,在C ++中int是可转换的char,反之亦然。 std::string的一个构造函数将使用两个输入迭代器(为了在它们指向的任何内容之间复制内容),因此您可以传递指向向量的开始和结束的迭代器以及内容将被有效复制,即:

std::vector< DWORD> Children { 66,66,67 }; // it's common practice to camel case variable names, so Children should really just be children 
std::string myString(Children.begin(), Children.end());