c ++打印缓冲区(整数到字符串)
Posted
技术标签:
【中文标题】c ++打印缓冲区(整数到字符串)【英文标题】:c++ print buffer (integer to string) 【发布时间】:2012-05-21 05:53:36 【问题描述】:代码:
#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); 我试图制作字符串,但也不起作用。
字符串测试;
【问题讨论】:
【参考方案1】:首先,尝试使用带有格式字符串的正确 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());
【讨论】:
要独立于字符宽度,您可以将_tprintf
与TEXT
宏一起使用。见MSDN documentation。顺便说一句,无论您是否使用_UNICODE
,此答案中的所有示例都应该有效。以上是关于c ++打印缓冲区(整数到字符串)的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个 type_traits 代码会给我一个整数到指针转换警告?