我正在开发Windows CE下的MFC程序。默认情况下是unicode。我可以使用TRACE打印一些这样的消息

TRACE(TEXT("Hey! we got a problem!\n"));

如果一切都是unicode,它可以正常工作。但是,我得到了一些ascii字符串来打印。例如:

// open the serial port
m_Context = CreateFile(TEXT("COM1:"), ...);
int rc = ReadFile(m_Context, buffer, 1, cBytes, NULL);
// Oops!! We got a problem, because we can't print a non-unicode string
TRACE(TEXT("Read data: %s\n"), buffer);

我从GPS模块通过com1读取字符串。它发送文本像这样<!>“$ GPSGGA,1,2,3,4 <!>”;它们都用ASCII编码。我想用TRACE打印出来,我该怎么办?

感谢。

有帮助吗?

解决方案

如果您不关心代码页,请使用"%hs"格式化窄字符串参数。例如,请参阅此页格式说明符的描述。

其他提示

在Windows中<!>“;%S <!>”;格式说明符(大写'S')将格式化一个与构建“相反”的字符串。在UNICODE构建中,它将期望ANSI / MBCS字符串,并且在非UNICODE构建中,它将期望UNICODE参数。

我不是100%肯定这会在CE上运行,但以下工作在桌面上(对于UNICODE构建):

TRACE( TEXT("Unicode string: \"%s\", ASCII string: \"%S\""), L"unicode", "ascii");

只要检索到的文本在0 <!>#8211; 127范围内真的是ASCII,并且Unicode编码是UTF-8,它就应该工作。 Unicode采用较低的ASCII范围,使用相同的代码点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top