问题标签 [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 投票
2 回答
1943 浏览

c++ - 这段代码是通用的,还是只是我的系统?

0 投票
1 回答
10197 浏览

c++ - 无法将 std::wstring 写入 wofstream

我在 Linux 系统上使用 Qt/C++。我需要将 aQLineEdit的文本转换为std::wstring并将其写入std::wofstream. 它适用于 ascii 字符串,但是当我输入任何其他字符(阿拉伯语或乌兹别克语)时,文件中没有任何内容。(文件大小为 0 字节)。

这是我的代码:

John Smith在行编辑中输入的输出是John Smith10. 但对于 unicode 字符串,什么都没有。

首先我认为这是一个问题QString::toStdWString(),但customersFile << ws.length();写入了所有字符串的正确长度。wstring所以我想我在写入文件时做错了什么。[?]

编辑:

我在eclipse中再写一次。并用 g++4.5 编译。结果是一样的:

0 投票
1 回答
3864 浏览

c++ - CStdioFile 未声明的标识符

使用 CStdioFile 类型时,我无法编译我的代码。我已包含 afx.h 头文件,但仍然收到错误消息。我要做的是编写一个包含整个 xml 文档的 cstring 文件。此 cstring 包含其中的注释,但是当我使用其他对象(例如 wofstream)将其写入文件时,这些注释由于某种原因被删除。这就是为什么我现在尝试使用 CStdioFile 将其写入文件的原因。如果有人可以帮助我解释为什么我不能使用 CStdioFile 编译我的代码,或者任何其他方式来编写包含 xml 注释的 cstring 到文件,请告诉我!下面是我使用 CStdioFile 的代码:

还有我的错误:错误 C2065:'CStdioFile':未声明的标识符错误 C2065:'modeCreate':未声明的标识符错误 C2065:'modeWrite':未声明的标识符错误 C2065:'typeText':未声明的标识符错误 C2065:'xmlFile':未声明的标识符错误C2146:语法错误:缺少“;” 在标识符“xmlFile”之前错误 C2228:“.Close”左侧必须具有类/结构/联合类型类型为“未知类型”错误 C2228:“.Open”左侧必须具有类/结构/联合类型类型为“未知类型”错误 C2228:“.WriteString”左侧必须有类/结构/联合类型类型为“未知类型”错误 C2653:“CFile”:不是类或命名空间名称错误 C2653: 'C文件':

0 投票
2 回答
4456 浏览

c++ - 在 C++ 中以 Cyrillic 读写文件

我必须首先读取西里尔文的文件,然后随机选择随机行数并将修改后的文本写入不同的文件。拉丁字母没有问题,但我遇到了西里尔文字的问题,因为我得到了一些垃圾。所以这就是我尝试做这件事的方式。

说,文件input.txt

我必须阅读它,并将每一行放入一个向量中:

那么我怎样才能使用西里尔文,使它产生可读的东西,而不仅仅是符号呢?

0 投票
1 回答
94 浏览

c++ - 击中宽字符后文件截断

在尝试将一些宽字符写入文件时,文件的所有输出都会在这些字符之后停止。我不知道发生了什么事。

0 投票
1 回答
100 浏览

c++ - wofstream 在从注册表接收到的广泛数据中被截断

尝试将宽字符写入文件时,我的 wofstream 被截断。

0 投票
1 回答
1603 浏览

windows - 宽字符到多字节

我正在尝试将宽字符转换为多字节。它仅在 yje myfile 部分。其余的工作正常。我不能使用 wofstream,因为我在几个地方使用了 ofstream,所以我只剩下这个了。

}

0 投票
2 回答
1610 浏览

c++ - 提升 std::wstring 的 C++ 跨平台(Windows 和 Mac)序列化

我正在为 Windows(使用 Visual Studio 2008)和 Mac(使用 GCC)构建的程序中使用 Boost C++ 库实现序列化。该程序在其大约 30 个类中使用宽字符串 ( std::wstring)。根据平台,当我保存到文件时(通过boost::archive::text_woarchive),宽字符串在输出文件中的表示方式不同。

在Windows下保存:

在MacOSX下保存:

其中 * 是一个 NULL 字符。

当我尝试使用 Mac 版本读取在 Windows 下创建的文件时(反之亦然),我的程序崩溃了。

到目前为止,据我了解,Windows 本身每个宽字符使用 2 个字节,而 MacOSX(我认为一般是 Unix)使用 4 个字节。

我遇到了可能的解决方案,例如utf8_codecvt_facet.cppUTF8 -CPPICUDinkumware,但我还没有看到一个可以与我已有的解决方案一起工作的示例(例如,我不希望在这点):

myMainClass包含宽字符串和指向其他类的 Boost 智能指针,这些类反过来会被序列化。

0 投票
2 回答
569 浏览

c++ - C++ 吞咽错误

我正在编写一个应用程序,它通过 Windows RPC 机制与另一个进程中的托管接口进行通信。

编组是通过标准的内置 NDR 处理的。该接口公开了几个函数,其中一个UNICODE_STRING通过参数返回字符串 ( )。

该函数在成功时返回 0,否则返回错误代码。现在,当我调用 RPC 函数时,它成功并填充了 UNICODE_STRING 参数。

问题是 C++ 或运行时在尝试读取函数返回的字符串时吞下了一个错误。为了节省您阅读大量代码,这是我的代码的缩写版本:

执行此代码后,输出为:

并返回。我已经通过这个函数使用了一个调试器,它正确地遍历了整个 68 个字符(不管缓冲区中有什么 - 它是垃圾数据)并正确地进入最后一个I won't be writtenwcout 指令。我想知道问题是否与控制台无法处理的不可读字符有关,这些字符可能会改变下一个字符的行为或控制台光标 - 这会使输出不可见,但不是 - 我已经交换了输出流并设置它到一个文件 (wofstream) 并且文件的大小是 47 字节 - 这与写入控制台流的大小完全相同。

我没有遇到任何访问冲突、任何异常、任何日志条目,什么都没有。即使调试器(VS2010)在选择中断每种可能的异常类型后也没有注意到任何异常 - 更令人惊讶的是,使用调试器单步执行代码并观察那里的本地人会产生预期值(我从 0到 68 并且缓冲区中的当前 wchar_t 有一个值(垃圾 unicode char)。

有人可以解释这种行为吗?

编辑:

交换打印循环:

正确打印temp67 的值。

但是,为什么打印这些字符的 wchar_t 版本会阻止输出流接受任何内容?

0 投票
4 回答
4638 浏览

c++ - Windows Unicode C++ 流输出失败

我目前正在编写一个应用程序,它需要我在任意窗口上调用 GetWindowText 并将该数据存储到文件中以供以后处理。长话短说,我注意到我的工具在战地 3 上失败了,我将问题缩小到窗口标题中的以下字符: http://www.fileformat.info/info/unicode/char/2122/index。 htm

所以我创建了一个小测试应用程序,它只执行以下操作:

低并且看,这会中断程序其余部分的控制台窗口的输出。

为什么当 MessageBoxW 等 API 很好地显示它时,MSVC STL 会在这个字符上窒息(我假设是其他字符)?

如何将这些字符打印到我的文件中?

在 Windows 7 x64 下在 VC10 和 VC11 上测试。

抱歉,帖子结构不佳,我在这里扯头发。

谢谢。

编辑:

最小测试用例

预期结果:“™”字符打印到控制台和文件。观察结果:文件已创建但为空。没有输出到控制台。

我已经确认我用于控制台的字体能够显示有问题的字符,并且文件肯定是空的(大小为 0 字节)。

编辑:

进一步调试显示在流中设置了“failbit”和“badbit”。

编辑:

我也尝试过使用 Boost.Locale,即使新的语言环境在全球范围内并明确地应用于所有标准流,我也遇到了同样的问题。