【问题标题】:C++ searching for a phrase in a file with UCS-2 LE encodingC++ 在使用 UCS-2 LE 编码的文件中搜索短语
【发布时间】:2017-04-30 19:17:44
【问题描述】:

我需要编写一个程序来搜索文本文件并列出该文件包含的名称列表。每个名称都放在“[PRG]”短语之后。所以我想搜索“PRG”而不是阅读下一个单词。我有一个问题,因为这个文件的编码是 UCS-2 LE。我发现我需要使用“wstring”变量而不是“string”。但我看到我正在从我的文件中读取奇怪的值,我无法将它们与“PRG”短语进行比较。

代码如下:

int main() {
wstring textBuff; // Buffor for reading text from a file
wstring searchBuff = L"PRG"; // Variable containing searching phrase

wifstream file;
file.open("programs.prg", ios::in | ios::binary);

if (file.good()) {
    // Reading file and listing every word after "PRG" phrase
    while (!file.eof()) {
        file >> textBuff;
        if (textBuff.find(searchBuff) != string::npos)
            wcout << textBuff << endl;
    }
}
file.close();
system("pause");
return 0;
}

我是编程新手,所以如果我的问题是微不足道的,我很抱歉,但我被困住了,我不知道我还能做什么。 先感谢您。

这是我试图从中获取数据的 prg 文件: .prg file

它包含一堆其他数据,但我想做的是列出烘焙程序的名称。所以我想搜索 [PRG],而不是再读两个词,然后得到其余的行,这是烘焙程序的名称。

【问题讨论】:

    标签: c++ character-encoding ucs2


    【解决方案1】:

    如果没有看到您文件中的数据副本或一些非常相似的数据,就很难有太大帮助。

    出现了许多问题,我怀疑其中任何一个都可能很重要,因为您称自己为“编程新手”。

    首先在http://hackipedia.org/Character%20sets/Unicode,%20UTF%20and%20UCS%20encodings/UCS-2.htm做一些研究阅读

    尤其是标题为: 字节序编码方案

    如果您的数据在“PRG”标签之后有一个 BOM,那么您必须通过编码适当的字节序来处理它...

    还可以在以下位置阅读材料: https://msdn.microsoft.com/en-us/library/mt771556.aspx

    尤其是底部的注释...

    博士

    【讨论】:

    • 感谢您的回答。我将文件添加到我的主要帖子中。调试程序后,我看到第一个值是“'ÿ','þ','[','\0','T''\0','Y','\0','P',' \0'']'" 而不仅仅是 "[TYP]"。我想前两个字符一定是 BOM,但我真的不知道我能做些什么。有没有办法摆脱它们?我只需要“查找”功能即可。这是该程序中唯一不起作用的部分。
    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2013-08-16
    • 2014-11-08
    • 2020-01-09
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多