最初我有用户输入十进制数(0 - 15),我会把它转换成二进制数。 说这些数字写入文本文件,如图所示。这些数字按1的数字排列。短划线 - 用于分隔不同的组1.我要读取此文件,并将一个组的字符串与下面的组中的所有字符串进行比较,即,组1中的所有字符串与组2中的所有字符串进行比较,以及第2组 - 第3组。
该交易是只允许一列0/1的差异,并且该列由字母t代替。如果遇到不止一列的差异,则不填写。 所以说组2,0001与组3,0011,只有第二列是不同的。然而,0010和0101是两列不同。
结果将被写入到另一个文件.....
此刻,当我读这些字符串,我使用矢量串。我遇到了困难。重要的是我必须一次访问一个字符,这意味着我已经将矢量字符串分解为矢量char。但似乎可能有更简单的方法来做到这一点。
我甚至想过一个哈希表 - 链表。将组1分配给H [0]。 H [current_group + 1]与H [current-group]进行比较。但除了第一个比较(比较1和0)之外,超出此范围的比较在这种散列链接方式下不起作用。所以我放弃了这一点。
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;
int main() {
ifstream inFile("a.txt");
vector<string> svec;
copy(istream_iterator<string>(inFile), istream_iterator<string>(), back_inserter(svec));
copy(svec.begin(), svec.end(), ostream_iterator<string>(cout,"\n"));
for(int i = 0; i < svec.size(); i++)
{
cout << svec[i] << " ";
}
inFile.close();
return 0;
}
这是它写入文件的示例代码....但就像我说的,载体的整个交易似乎在我的情况是不切实际....
任何帮助表示赞赏。感谢
看起来非常像'家庭作业'请标记这样...提示:按位操作,特别是异或会有所帮助。 – mjv 2010-12-06 01:19:51