【问题标题】:Non-unicode printf's don't work非 unicode printf 不起作用
【发布时间】:2018-09-07 00:40:00
【问题描述】:

我在我的 C++ 控制台应用程序中启用了宽字符串支持:

_setmode(_fileno(stdin), _O_WTEXT);
_setmode(_fileno(stdout), _O_WTEXT);

我现在可以使用wprintf(或std::wcin)很好地读取和输出Unicode 字符,但正因为如此,普通的printf(和std::cin)调用将无法正常工作,因为它们会引发异常。有没有办法绕过/纠正这个?更换它们听起来不是一个解决方案。

【问题讨论】:

  • 使用_O_TEXT_O_WTEXT 在ANSI 和UNICODE 之间来回切换。 _setmode(_fileno(stdout), _O_TEXT) 会将输出设置回 ANSI

标签: c++ windows unicode visual-studio-2015 console-application


【解决方案1】:

使用wprintf 输出宽字符。

printf 不允许写入宽/unicode 流:

https://msdn.microsoft.com/es-es/library/wc7014hz.aspx

【讨论】:

  • 更正:使用wprintf输出个字符。
  • 但问题是:如何使用好的ol'printf输出非unicode字符?
  • ^^^^ 是的,我的错。
  • 来自 msdn:printf 当前不支持输出到 UNICODE 流。 msdn.microsoft.com/es-es/library/wc7014hz.aspx
  • @Bigiansen 谢谢!这就是答案;估计没有办法解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 2016-01-06
  • 1970-01-01
  • 2013-04-13
相关资源
最近更新 更多