矢量字符串、int 和 dword 问题

Vector string, int and dword troubles

本文关键字:dword 问题 int 字符串      更新时间:2023-10-16

所以我正在创造一些东西,我遇到了一个很大的问题。

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 或常量字符。请帮忙

正如@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());