0
void TATTDataset::AckErrHandler(const NDataString& ErrMsg)
{
    system("echo ErrMsg: %s >> err", (const char *)ErrMsg);
    ...... code .......
}

这个错误信息是什么意思?我该如何解决?ErrMsg.toCString() 也无济于事。有什么建议吗?

编辑:

我按照建议编辑了代码-

String s;    
Char *tmpStr = ErrMsg.ToCString();
s.Format("echo ErrMsg: %s >> err",tmpStr);    
system(s);

我仍然得到:无法用'const char *'初始化'char *'。字符 *tmpStr = ErrMsg.ToCString();

4

4 回答 4

1

system()调用实际上只有一个参数。你想要做的是 let system()act like printf(),这显然不是它的设计方式。

您不能尝试使用可以进行一些解析或制作临时缓冲区并使用sprintf()的字符串类

于 2009-09-21T09:55:06.447 回答
1

正如已经提到的 system() 只接受一个参数(一个字符串)。

如果 ErrMsg.toCString() 返回一个 MFC CString 那么你可以试试这个:

void TATTDataset::AckErrHandler(const NDataString& ErrMsg)
{
    CString s;
    s.Format("echo ErrMsg: %s >> err", ErrMsg.toCString());
    system(s);
    ...... code .......
}
于 2009-09-21T09:58:06.663 回答
0

系统函数只有一个参数,但你传入了两个。

1st argument: "echo ErrMsg: %s >> err"
2nd argument: (const char *)ErrMsg

您可以通过仅传递一个参数或重新定义 system() 以接受两个参数来解决它。

于 2009-09-21T09:54:08.853 回答
0

您正在向系统传递 2 个参数,它需要一个

2个是“echo ErrMsg: %s >> err”

(const char *)ErrMsg

我怀疑你的意思是把它们结合起来,例如使用 snprintf

虽然如果这是实际代码,我会直接将错误消息输出到文件而不是使用系统,例如 fprintf

于 2009-09-21T09:54:41.673 回答