我有一个程序,应该采用Dictionary.txt程序-该程序具有200条单独的行,每行一个字符串-并将每个字符串散列到一个数组中。然后,我接受用户输入的字符串,并尝试在新填充的数组中找到此字符串。该程序正在使用模哈希函数来获取每个字符串的数组索引,并且应该逐行读取.txt文件。截至目前,该程序已执行,没有任何错误,但是在尝试读取字符串后,数组完全为空。
我已经尝试过getline函数以及文件>>输入。
EDIT:我的文件无法正确打开,因此我将file.open()方法中的URL替换为C:/直接URL,而不是使用我的Visual Studio中包含的URL。项目。
int wordFinder(fstream& file, string word) {
string Table[200];
for (int i = 0; i < 200; i++) {
//modulo hashing using size of array
int index = i % 200;
//collision
if (!(Table[index].empty())) {
int count = 0;
do {
index = (index + 1) % 200;
count++;
} while ((!(Table[index].empty())) && (count < 200));//while the current position is occupied and count is less than the size of the array
getline(file, Table[index], '\n');//take string from file and put it into the table array
cout << "Collision " << Table[index]<< endl;
}
//no collision
else {
cout << "No Collision " << Table[index]<<index<< endl;
getline(file, Table[index], '\n');//take string from file and put it into the table array
}
}
//find string if in array
for (int i = 0; i < 200; i++) {
if (Table[i].compare(word) == 0) {
return 1;
}
}
//print table values
for (int i = 0; i < 200; i++) {
cout << Table[i] << endl;
}
return 0;
}
预期结果是程序找到该单词时返回1,否则返回0。它还应该打印值的数组,每个索引都具有与.txt文件不同的单词。截至目前,该程序始终返回0,因为数组最终完全为空,因此该程序将打印一堆空白。
我的文件无法正确打开,因此我将file.open()方法中的url替换为C:/直接url,而不是使用我的Visual Studio项目中包含的URL。我进行了此更改后,它起作用了。