首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在unicode MFC环境下使用跟踪和ascii?

如何在unicode MFC环境下使用跟踪和ascii?
EN

Stack Overflow用户
提问于 2009-11-30 15:42:07
回答 3查看 1.8K关注 0票数 1

我正在windows CE下开发一个MFC程序。默认为unicode。我可以使用TRACE打印一些消息,比如

代码语言:javascript
复制
TRACE(TEXT("Hey! we got a problem!\n"));

如果一切都是unicode,它工作得很好。但是,我有一些ascii字符串要打印。例如:

代码语言:javascript
复制
// 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);

我通过com1从GPS模块读取字符串。它发送类似于"$GPSGGA,1,2,3,4“文本。它们都使用ASCII编码。我想打印出来的痕迹,我该怎么做呢?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-30 16:19:17

如果您不关心代码页,可以使用"%hs"格式化一个窄字符串参数。例如,有关格式说明符的说明,请参见this page

票数 4
EN

Stack Overflow用户

发布于 2009-11-30 16:53:44

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

我不能百分之百确定这是否可以在CE上运行,但是下面的代码可以在桌面上运行(对于UNICODE构建):

代码语言:javascript
复制
TRACE( TEXT("Unicode string: \"%s\", ASCII string: \"%S\""), L"unicode", "ascii");
票数 1
EN

Stack Overflow用户

发布于 2009-11-30 15:53:44

只要检索到的文本是0-127范围内的ASCII,并且Unicode编码是UTF-8,它就应该可以工作。Unicode采用了较低的ASCII范围,使用相同的代码点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1818366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档