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());

【讨论】:

要独立于字符宽度,您可以将_tprintfTEXT 宏一起使用。见MSDN documentation。顺便说一句,无论您是否使用_UNICODE,此答案中的所有示例都应该有效。

以上是关于c ++打印缓冲区(整数到字符串)的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法分析(C语言描述)习题2.14

C语言程序:用递归法将一个整数n转化成字符串

为啥这个 type_traits 代码会给我一个整数到指针转换警告?

C语言 编写程序,求出1~100之间所有能被3整除的整数,将他们输出,并且统计这些数总

C语言实验——打印金字塔

剑指 Offer 17. 打印从1到最大的n位数