问题标签 [wofstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
107 浏览

c++ - std::wofstream << WCHAR 和 << CHAR 可以同时吗?

我们如何同时将 WCHAR 和 CHAR 写入 wofstream?像这样:

这是用于测试的东西。我只能“wofstream<<WCHAR”或“wofstream<<CHAR”,但不能同时“wofstream<<WCHAR<<CHAR”。

我们可以在控制台看到

但是在 2.txt 中,我看到了

0 投票
2 回答
863 浏览

c++ - 将 unicode 字符/字符串写入文件

我正在尝试将 unicode 字符写入文件,std::wofstreamputorwrite函数不写入任何字符。

示例代码:

output.txt文件为空,执行代码后没有写入 wchar/string,为什么?我究竟做错了什么?

编辑: 更正的代码:

应用代码更正后,我看到了,Failed to write但我仍然不明白我需要做什么来编写宽字符串和字符?

0 投票
0 回答
44 浏览

c++ - 为什么wofstream输出停止在某个点

我正在尝试从值 0 到最大值(FFFF 或 65,535)写入文件 wchar_t(s)。该过程是成功的,但是当我打开输出文件时,它以没有符号的值 256 结束。为什么会这样?

我试过让程序休眠,而不是 wchar_t,我使用了 wstring(直接写入 wstring 而不是 wchar_t),但一切都以相同的方式结束。

//循环

文件中的最后一个应该是“[65535 :: (symbol here)]”,但它以“[256 :: (空白且没有右括号)”结尾

0 投票
0 回答
205 浏览

c++ - C ++逐个字符写入unicode(wchar_t)字符到文件导致空文件

因此,我需要先读取一个 unicode 文件,然后使用 Huffman 算法对其进行转换(有效压缩它)并将其写入一个新文件。

unicode 的原因是特殊字符,如连字符 - 较长的破折号和其他 - 没有 unicode,使用 ifstream/ofstream 和 unsigned char 读写将连字符转换为 3 个单独的字符,当我想解压缩文件时,它会添加以前的字符不在那里。

现在,我使用 std::wifstream 和 std::wofstream 来执行此操作,如下所示:

节点对象包含从文件中读取的每个字符的频率分布,而代码对象包含必须转换的每个字符的位代码。

这导致了这样一个事实,即我可以毫无问题地读取文件,但是当我写回新位时,没有任何内容被写入文件

我尝试灌输一个语言环境,但没有帮助,还设置了一个全局语言环境。

除了将 wchar_t 导入 wofstream 之外,我还尝试使用 .put() 函数和 .write() - 这里没有运气。

关于什么可能是错的任何想法?

PS:我只能使用没有扩展的标准 c++17。

谢谢!

0 投票
0 回答
68 浏览

c++ - 用 std::string 和 std::wstring 对象写入同一个文件

我想知道用 std::string 和 std::wstring 对象写入同一个文件是否肯定是安全的。我有一个这样的片段:

我不确定使用此代码时编码是否没有问题,或者在特定情况下可能会出现这些问题。有没有人知道与之相关的危险?

0 投票
2 回答
77 浏览

c++ - 通过 wofstream 打印到文件

下面的代码不起作用并给出以下编译错误:

严重性代码描述项目文件行抑制状态错误二进制表达式的操作数无效('std::wofstream'(又名'basic_ofstream >'))

代码是:

如果我注释掉以下行,则没有错误。

好的。奇怪和令人困惑的是,如果我添加具有不同参数的函数,如下所示,尽管我没有注释掉上面提到的行,但没有错误:

这不是一回事吗?这里发生了什么?

0 投票
0 回答
51 浏览

c++ - std::wofstream 在 GCC 中以二进制模式被破坏,但在 MSVC 中有效

以下代码在 MSVC 中编译时会生成一个单字节文件,但在 GCC 8.3 中编译时会生成一个空文件。

有没有任何可靠的方法可以将 wchar_t 输出到二进制流中,而不必担心 codecvt 会突然启动并破坏一切?我的意思是我正在使用二进制模式,因为我在这里不需要 codecvt。

我知道将 ofstream 用于二进制输出会更好,但不幸的是 wofstream 的使用是我无法更改的 API 的一部分(尽管我认为这是一个非常愚蠢的想法,至少因为 wchar_t 的大小不是由标准定义的)。

更新:如果我将它灌输到流中,看起来下面的自定义 codecvt 会有所帮助,但我不确定这是否是正确的方法:

0 投票
1 回答
191 浏览

c++ - 将 fmtlib 与 wofstream 一起使用的规范方法是什么

我们正在切换到 fmt 库,旨在重写许多基于宽字符输出流的格式。

我发现fmt::output_filewhich 返回一个class ostream : private detail::buffer<char>实例,但看起来不支持 wchar_t。

在宽字符输出流场景中使用格式库的规范方法是什么?

我能想到的唯一方法是手动打开 astd::wofstream并使用fmt::format. 这是在路线图上还是我错过了什么?

0 投票
1 回答
55 浏览

c++ - 如何使用 C++ 在文件中间添加阿拉伯字符?

我正在构建一个需要在英文文件中间添加阿拉伯字符的应用程序,我构建的函数如下:

对于如下文本文件:

并期待收到

虽然当我把阿拉伯字母ASCII像:

我收到以下信息:

不知道为什么?!

0 投票
0 回答
76 浏览

c++17 - Windows 7 是否有任何 std::locale (".utf8") 的替代品?wofstream.imbue(std::locale (".utf8")) 不会向 Windows 7 上的文件写入任何内容

我的代码在 Windows 10 下运行良好,但昨天我尝试在 Windows 7 下运行它。必须将 ucrtbase.dll 添加到程序目录,否则程序在启动时崩溃。以为现在一切都很好..但发现日志文件和其他一些文件总是空的。我没有 .imbue(".utf8") 的文件不是空的,并且充满了预期的信息它总是有一个新问题。这真的让我筋疲力尽。而现在,我只是找不到任何解决这个问题的方法,所以我真的希望在这里找到帮助

这是一些在 Windows 7 上无法正常工作的代码示例

在 woof.txt 中的 windows 10 下输出 - “你会在今生或至少在另一个生活中正常工作......拜托......”

在 woof.txt 中的 windows 7 下输出 - ""

使用 utf8 会导致一些输出预计使用不同的语言,例如俄语。如何让我的程序在 win7 或 win10 或其他窗口下按预期运行?

如果我写的东西很难理解,我很抱歉,不是母语人士,这是我第一次尝试在 stackoverflow 上提问