将 BYTE* 从MODULEENTRY32的 modBaseAddr 转换为 std::string
Converting BYTE* from MODULEENTRY32's modBaseAddr to a std::string
我已经从Winapi中填充了包括modBaseAddr
的MODULEENTRY32
结构。我需要在保持其格式的同时将其转换为std::string
。我尝试将BYTE *modBaseAddr
内容复制到char
缓冲区,然后从中制作std::string
。这产生了一些神秘的字符,而其他时候则违反了MEM访问:0xC0000005: Access violation reading location 0x001013C0.
。我了解为什么会发生这种情况,经过进一步的研究,我对任何解决方案感到困惑。
谢谢,
编辑:为了澄清我的意图,我仅以存储地址来记录它
您可以使用std::ostringstream
。除了char*
以外,将传递给operator<<
的任何指针都将打印出其在其时保留的地址。char*
将其作为零终止字符串的特殊处理。由于BYTE*
确实是char*
,因此您只需要打印其地址即可:
std::ostringstream o;
o << (void*) modBaseAddr;
std::string str = o.str();
相关文章:
- 将无符号char*转换为std::istream*C++
- 可以有效地转换 std::any 与 std::any_cast
- 尝试转换 std::chrono::d uration 会导致"rep cannot be a duration"编译错误
- 封送处理 - 转换 std::向量<char>到字符串^ 反之亦然
- 在 C++ 中转换 std::string,使其可以是 C# 中的 byte[]
- 转换 std::vector<T> 为 char *
- 转换std ::绑定到功能指针
- 强制转换 std::vector 的所有成员
- 无法转换'std::string{又名std::basic_string<char>}'到&
- 转换std::string到cv::Mat对象
- 转换std::chrono::system_clock::time_point::min()为字符串时,无效空指针错误
- 简单的模板化函数,用于转换 std::vectors - "illegal use of this type as an expression"
- Const转换std容器
- 如何强制转换std::make_unique,以便可以使用在类中声明的函数
- 如何向下转换std::shared_ptr
- 转换 std::vector<uint8_t> 为 QImage
- 使用std::dynamic_pointer_cast向上转换std::shared_ptr
- 如何转换std::vector<无符号字符>到向量<char>而无需复制
- 正在强制转换std::pair
const&T1 const, T2>const&安全的 - 如何在boost.python中转换std::string*