【问题标题】:c++ wcout stops outputting, also wofstream stops outputting after some callsc ++ wcout停止输出,wofstream在一些调用后也停止输出
【发布时间】:2018-10-28 16:29:33
【问题描述】:

我尝试将内容输出到文件

  std::locale::global(std::locale());
  std::wofstream file(outfilename , std::wofstream::binary);

  for (const auto & j : grid[0]) {
      try {
          std::wcout << L"String in WideString " << decoder->decode(j) << std::endl;
          file << decoder->decode(j) << std::endl;
      }
      catch (std::exception& e) {
          std::cout << e.what() << std::endl;
      }

  }

经过一定次数的调用后,wcout 停止输出任何内容(甚至“WideString 中的字符串”也没有输出),

(我对其进行了调试,它在停止输出文本后按预期执行了 wcout)

wofstream 也会在相同数量的调用后停止输出。

这是我第一次使用widestrings、streams和couts。

感谢您对此进行调查。

【问题讨论】:

  • 主要嫌疑人要么是decoder,要么是grid,要么是grid[0],要么是js之一无效;或decode 做一些未定义的事情。
  • 当我正常 cout 那些字符时,这个 cout 将输出,具有相同的 j 和网格
  • 当我省略自己的解码器时也会发生同样的情况
  • 只有当我对文件流使用 wcout 和 wofstream 时它才会停止工作
  • 这对我来说很好用,正如@molbdnilo 所说,问题似乎与解码或网格有关repl.it/repls/PolishedEmptyActivemovie

标签: c++ wofstream


【解决方案1】:

这是€符号,它阻止 wcout 和 wofstream 工作,从输入文件中删除它,我从中获取数据,使一切按预期工作,非常奇怪

【讨论】:

  • 更奇怪的是,之前测试输出€符号时,没有出现任何问题,只是在正是在这种情况下使用它之后,才出现了这个错误。
猜你喜欢
  • 2015-07-08
  • 1970-01-01
  • 2017-03-21
  • 2012-05-01
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多