2017-01-19 79 views
-2

所以我創建了一些東西,並且遇到了一個很大的問題。矢量字符串,int和dword問題

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。請幫助

+0

'DWORD'是一個整數,如果你想將整數轉換爲一個字符串使用'std :: to_string'。 –

+0

@GillBates我試過了,它是一個矢量但這種情況發生https://gyazo.com/14b5f8e4f0cfd99b64506a642063965e(沒有重載函數的實例) –

+0

DWORD num4 = *(DWORD *)(*(DWORD *)(instance + 0x2C ));'這似乎並不安全。 – Kevin

回答

1

正如@Gill貝茨DWORD指出,其實只是一個unsigned 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());