相关疑难解决方法(0)

为什么printf格式的unicode参数没有?

使用printf将双字节字符串格式化为单字节字符串时:

printf("%ls\n", L"s:\\??????Hello");   // %ls for a wide string (%s varies meaning depending on the project's unicode settings).
Run Code Online (Sandbox Code Playgroud)

显然,有些字符不能表示为ascii字符,所以有时我看到双字节字符变成'?'的行为.标记字符.但是,这似乎取决于特定的角色.对于上面的printf,输出是:

s:\
Run Code Online (Sandbox Code Playgroud)

我希望我可以得到类似的东西:

s:\??????Hello
Run Code Online (Sandbox Code Playgroud)

我担心我已经失去了这个例子,但是当我遇到unicode字符时,我想一个字符串,用'?'替换第一个字符串 然后放弃了其余的.

所以,我的问题是,当您将宽字符串格式化为单字节字符串时应该发生什么.这里的文档:http://msdn.microsoft.com/en-us/library/hf4y5e3w.aspx说"字符显示到第一个空字符".但是,我没有看到.这是printf中的一个错误,还是我在某处记录的行为,如果有的话,在哪里.

谢谢你的帮助.

UPDATE

感谢人们给我替代使用printf的答案.我将改为另类,但出于好奇,我真的很感兴趣为什么printf没有可靠的记录行为.看起来好像它的实现者竭尽全力使它不起作用.

c c++ unicode visual-studio-2010

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×1

c++ ×1

unicode ×1

visual-studio-2010 ×1