VC中使用CString,总是提示AppendFormat is not a member of CString...

时间:2020-12-31 19:53:31
VC中使用CString,总是提示AppendFormat is not a member of CString...

使用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

#4


CString类里面本来就没有这个函数啊,你为什么会用呢?

#5


换高版本VC,与时俱进

#6


谢谢楼上前辈们的回复,我这个版本确实低了,高版本可以,不过为了赶作业,我换成了Format(),但是Format()后面的字符串会覆盖前面的内容,所以就又设了一个CString变量 text,buf=str.Format(),text=text+buf,

#7


很好, 就是这样。

#8


与时俱进! VC中使用CString,总是提示AppendFormat is not a member of CString...

#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

#4


CString类里面本来就没有这个函数啊,你为什么会用呢?

#5


换高版本VC,与时俱进

#6


谢谢楼上前辈们的回复,我这个版本确实低了,高版本可以,不过为了赶作业,我换成了Format(),但是Format()后面的字符串会覆盖前面的内容,所以就又设了一个CString变量 text,buf=str.Format(),text=text+buf,

#7


很好, 就是这样。

#8


与时俱进! VC中使用CString,总是提示AppendFormat is not a member of CString...

#9


或者你可以使用结构体,数组等数据来保存。。

#10


学到东西了!

#11


text如何传回去呢?