2017-01-19 3 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

整数を文字列に変換する場合は 'std :: to_string'を使用します。 –

+0

@GillBates私はそのベクトルを試しましたしかし、これはhttps://gyazo.com/14b5f8e4f0cfd99b64506a642063965e(オーバーロードされた関数のインスタンスはありません)が発生します –

+0

'DWORD num4 = *(DWORD *)(*(DWORD *)(インスタンス+ 0x2C ));これはまったく安全ではないようです。 – Kevin

答えて

1

@Gill Batesによって指摘されたようにDWORDは実際にはC++の符号なし整数ですintは変換可能charであり、逆もまた同様です。 std::stringのコンストラクタの1つは、ベクトルの開始点と終了点を指すイテレータを渡すことができるように、2つの入力イテレータ(それらが指し示している間に内容をコピーするために)を取ります。 :

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()); 
関連する問題