C ++:检查单词是否拼写正确

我正在寻找一种简单的方法来检查某个字符串是否是拼写正确的英文单词。例如,'looking'将返回True,而'hurrr'将返回False。我不需要拼写建议或任何拼写纠正功能。只是一个简单的函数,它接受一个字符串并返回一个布尔值。 我可以使用PyEnchant轻松地使用Python,但是如果你想在MS Visual C ++中使用它,你似乎必须自己编译它。     
已邀请:
PyEnchant基于Enchant,它是一个提供C和C ++接口的C库。所以你可以将它用于C ++。最小的例子是这样的:
#include <memory>
#include <cstdio>

#include "enchant.h"
#include "enchant++.h"

int main ()
{
    try
        {
            enchant::Broker *broker = enchant::Broker::instance ();
        std::auto_ptr<enchant::Dict> dict (broker->request_dict ("en_US"));

            const char *check_checks[] = { "hello", "helllo" };
            for (int i = 0; i < (sizeof (check_checks) / sizeof (check_checks[0])); ++i)
        {
            printf ("enchant_dict_check (%s): %dn", check_checks[i],
                dict->check (check_checks[i]) == false);
        }

    } catch (const enchant::Exception &) {
        return 1;
    }
}
有关更多示例/测试,请参阅其SVN存储库。     
如果你想自己实现这样的功能,你需要一个数据库来查询,以便找出给定的单词是否有效(通常是纯文本文件就足够了,比如Linux上的
/usr/share/dict/words
)。 否则你可以依赖第三方拼写检查库来做到这一点。     
你可以带一个GNU字典(如上所述的
/usr/share/dict/words
)并将其构建成一个适当的数据结构,它可以根据你的性能需求快速查找和成员资格检查,例如有向无环字图甚至只是特里可能就足够了。     
对于初学者,你需要一个单词列表。 (/ usr / share / dict / words可能吗?) 你应该把你的单词列表读成
std::set
。然后,正确的拼写测试只包括检查所有用户输入的单词是否在集合中。     
bool spell_check(std::string const& str)
{
  std::cout << "Is '" << str << "' spelled correctly? ";
  std::string input;
  std::getline(input);

  return input[0] == 'y' || input[0] == 'Y';
}
    

要回复问题请先登录注册