[英]c++ print buffer (integer to string)
碼:
#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);
我試圖打線,也沒有用。
弦測試
首先,嘗試使用格式字符串正確的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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.