gpt4 book ai didi

C++打印缓冲区(整数到字符串)

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:51 24 4
gpt4 key购买 nike

代码:

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <iomanip>
#include <locale>
#include <sstream>
#include <string>
int main()
{
HWND handle = FindWindow(0 ,TEXT("window name"));
if(handle == 0)
{
MessageBox(0,TEXT("Failed to find window"),TEXT("Return"),MB_OK);
}
else
{
DWORD ID;
GetWindowThreadProcessId(handle,&ID);
HANDLE hProcess = OpenProcess(PROCESS_VM_WRITE|PROCESS_VM_OPERATION , FALSE, ID);
hProcess = OpenProcess(PROCESS_VM_READ , FALSE, ID);

if(!hProcess)
{
Beep(1000,1000);
}else {

int buffer;
if (ReadProcessMemory(hProcess,(void *)0x00963FC4,&buffer,4,NULL))
{
printf(buffer);
}
else {
MessageBox(0,TEXT("Could not Read"),TEXT("Return"),MB_OK);
}

}CloseHandle(hProcess);
}

}


我试图制作这个读取内存地址的程序,
但是我得到了这个错误:
IntelliSense:“int”类型的参数与“const char *”类型的参数不兼容
我试过 printf(buffer);
我试图制作字符串,但也不起作用。

string test;

最佳答案

首先,尝试对格式字符串使用正确的 printf() 调用:

printf("%d", buffer);

C 是一种静态类型语言,您不能使用 printf() 执行类似 python 的操作来输出您想要的任何内容。 printf() 函数始终只打印第一个“const char *”参数,允许根据规则替换此字符串中的某些值。

其次,我在您的代码中看到了 TEXT() 宏,因此您可能在项目设置中使用了 Unicode 字符串。如果是这样(你应该在 VC++ 中得到链接错误 2019/2005),你必须使用 wprintf() 函数:

wprintf(L"%d", buffer);

要打印 std::string 对象,您还必须将其转换为“const char*”。这是通过 string::c_str() 调用完成的:

std::string MyString("Test");
printf("Your string is = %s", MyString.c_str());

关于C++打印缓冲区(整数到字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com