使用MFC编写嗅探器,想要以十六进制显示数据包的具体信息,但总是提示AppendFormat is not a member of CString,添加了SP6补丁之后,编译可以通过,但还是链接出现错误。。
//将数据包以十六进制方式打印出来,,,,,如何调用?
void print_packet_hex(const u_char* pkt,int size_pkt,CString *buf)
{
int i=0,j = 0,rowcount;
u_char ch;
char tempbuf[256];
memset(tempbuf,0,256);
for(i = 0;i<size_pkt;i+=16)
{
//buf->Format(_T("%04x: "),(u_int)i);
buf->AppendFormat(_T("%04x: "),(u_int)i);
rowcount = (size_pkt-i) > 16 ? 16 : (size_pkt-i);
for (j = 0; j < rowcount; j++)
buf->AppendFormat(_T("%02x "),(u_int)pkt[i+j]);
//buf->Format(_T("%02x "),(u_int)pkt[i+j]);
//不足16,用空格补足
if(rowcount <16)
for(j=rowcount;j<16;j++)
buf->AppendFormat(_T(" "));
//buf->Format(_T(" "));
for (j = 0; j < rowcount; j++)
{
ch = pkt[i+j];
ch = isprint(ch) ? ch : '.';
buf->AppendFormat(_T("%c"),ch);
//buf->Format(_T("%c"),ch);
}
buf->Append(_T("\r\n"));
//buf->Format(_T("\r\n"));
if(rowcount<16)
return;
}
}
11 个解决方案
#1
用了一个最笨的办法解决这个问题,将AppendFormat改为Format,发现使用Format会将buf之前的内容覆盖,于是用另一临时的CString变量text保存buf的内容,即在每一句buf.Format()之后添加一句text=text+buf;最后将text显示在Edit控件上即可。
#2
CAtlString str = _T("Some data:\t");
str.AppendFormat(_T("X value = %.2f\n"), 12345.12345);
_tprintf_s(_T("%s"), (LPCTSTR) str);
#3
高版本 V刹才有
CStringT::AppendFormat
CStringT::AppendFormat
#4
CString类里面本来就没有这个函数啊,你为什么会用呢?
#5
换高版本VC,与时俱进
#6
谢谢楼上前辈们的回复,我这个版本确实低了,高版本可以,不过为了赶作业,我换成了Format(),但是Format()后面的字符串会覆盖前面的内容,所以就又设了一个CString变量 text,buf=str.Format(),text=text+buf,
#7
很好, 就是这样。
#8
与时俱进!
#9
或者你可以使用结构体,数组等数据来保存。。
#10
学到东西了!
#11
text如何传回去呢?
#1
用了一个最笨的办法解决这个问题,将AppendFormat改为Format,发现使用Format会将buf之前的内容覆盖,于是用另一临时的CString变量text保存buf的内容,即在每一句buf.Format()之后添加一句text=text+buf;最后将text显示在Edit控件上即可。
#2
CAtlString str = _T("Some data:\t");
str.AppendFormat(_T("X value = %.2f\n"), 12345.12345);
_tprintf_s(_T("%s"), (LPCTSTR) str);
#3
高版本 V刹才有
CStringT::AppendFormat
CStringT::AppendFormat
#4
CString类里面本来就没有这个函数啊,你为什么会用呢?
#5
换高版本VC,与时俱进
#6
谢谢楼上前辈们的回复,我这个版本确实低了,高版本可以,不过为了赶作业,我换成了Format(),但是Format()后面的字符串会覆盖前面的内容,所以就又设了一个CString变量 text,buf=str.Format(),text=text+buf,
#7
很好, 就是这样。
#8
与时俱进!
#9
或者你可以使用结构体,数组等数据来保存。。
#10
学到东西了!
#11
text如何传回去呢?