0

我需要编写一个程序来搜索文本文件并列出该文件包含的名称列表。每个名称都放在“[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 文件

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

4

1 回答 1

0

如果没有从您的文件中查看数据副本或某些具有很大相似性的数据,则很难提供太多帮助。

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

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

特别是标题为:字节顺序编码方案的部分

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

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

尤其是底部的注释...

博士

于 2017-04-30T20:40:51.597 回答