gpt4 book ai didi

c++ - UCS-2LE 文本文件解析

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:26 26 4
gpt4 key购买 nike

我有一个文本文件,它是使用某些 Microsoft 报告工具创建的。文本文件在开头包含 BOM 0xFFFE,然后是 ASCII 字符输出,字符之间有空值(即“F.i.e.l.d.1.”)。我可以使用 iconv 将其转换为 UTF-8 使用 UCS-2LE 作为输入格式和 UTF-8 作为一种输出格式……效果很好。

我的问题是我想将 UCS-2LE 文件中的行读入字符串并解析字段值,然后将它们写入 ASCII 文本文件(即 Field1 Field2)。我已经尝试了基于 stringwstringgetline 版本——当它从文件中读取字符串时,功能类似于 substr( start, length) 将字符串解释为 8 位 值,因此开始和长度值是关闭的。

如何将 UCS-2LE 数据读入 C++ 字符串并提取数据值?我查看了 boosticu 以及大量的谷歌搜索,但没有找到任何有效的方法。我在这里错过了什么?请帮忙!

我的示例代码如下所示:

wifstream srcFile;
srcFile.open(argv[1], ios_base::in | ios_base::binary);
..
..
wstring srcBuf;
..
..
while( getline(srcFile, srcBuf) )
{
wstring field1;
field1 = srcBuf.substr(12, 12);
...
...
}

因此,例如,如果 srcBuf 包含“W.e.t.h.i.n.k. i.n.g.e.n.e.r.a.l.i.t.i.e.s.”,则上面的 substr() 返回“.k.i.n.g.e ”而不是“g.e.n.e.r.a.l.i.t.i.e.s.”。

我想要的是读入字符串并对其进行处理,而不必担心多字节表示。有没有人有使用 boost (或其他东西)从文件中读取这些字符串并将它们转换为固定宽度表示供内部使用的示例?

顺便说一句,我在 Mac 上使用 Eclipse 和 gcc。我的 STL 可能不理解宽字符串吗?

谢谢!

最佳答案

我花了好几个小时来解决这个问题,以下是我的结论:

我无法在我的 C++11 之前的编译器中完成这项工作,不得不求助于用 Ruby 编写脚本并生成一个进程(它只是在测试中,所以我认为这种复杂性是可以接受的)执行我的任务。

希望这可以节省其他人一些时间,很乐意提供帮助。

关于c++ - UCS-2LE 文本文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1249673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com