所以我遇到一个问题,当我从循环中的文件中读取输入时,我的函数将无法正常工作:
ifstream in(inputFileName.c_str()); //input file is a string
string word;
while (in >> word){
cout << word << endl; //this behaves as it should n prints all words in file
test.insert(word, 0); //this function won't insert the words !
}
但是,如果我这样做
in >> word;
test.insert(word, 0);
in >> word;
test.insert(word, 0);
in >> word;
test.insert(word, 0);
.... 这一切都很好!!这对我来说真的很奇怪,任何想法可能会导致什么?
答案 0 :(得分:0)
听起来好像问题可能在你的哈希表类中,其中test
是一个实例。
缺乏一个非常好的理由不这样做,我至少考虑使用std::unordered_set
代替:
std::ifstream in(inputFilename); // `.c_str()` no longer required in C++11
// read the words into the set
std::unordered_set test {std::istream_iterator<std::string>(in),
std::istream_iterator<std::string>()};
// display the unique words:
std::cout << "Unique words:\n";
std::copy(test.begin(), test.end(),
std::ostream_iterator<std::string>(std::cout, "\n"));