C ++使用UCS-2 LE编码在文件中搜索短语

时间:2017-04-30 19:17:44

标签: c++ character-encoding ucs2

我需要编写一个程序来搜索文本文件并创建一个名称列表,该文件包含在内。每个名字都放在“[PRG]”短语之后。所以我想搜索“PRG”而不是阅读下一个单词。我有一个问题,因为这个文件的编码是UCS-2 LE。我发现代替“字符串”我需要使用“wstring”变量。但我发现我正在从我的文件中读取奇怪的值,我无法将它们与“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],而不是读另外两个单词而不是得到其余的一行,这是烘焙程序的名称。

1 个答案:

答案 0 :(得分: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

特别是底部的注释......

Dr t