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

时间:2010-12-23 18:35:14

标签: c++ spelling

我正在寻找一种简单的方法来检查某个字符串是否是拼写正确的英文单词。例如,'looking'将返回True,而'hurrr'将返回False。我不需要拼写建议或任何拼写纠正功能。只是一个带字符串并返回布尔值的简单函数。

我可以使用PyEnchant轻松地使用Python,但是如果你想在MS Visual C ++中使用它,你似乎必须自己编译它。

5 个答案:

答案 0 :(得分:3)

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): %d\n", check_checks[i],
                dict->check (check_checks[i]) == false);
        }

    } catch (const enchant::Exception &) {
        return 1;
    }
}

有关更多示例/测试,请参阅他们的SVN repository

答案 1 :(得分:2)

如果你想自己实现这样的功能,你需要一个数据库来查询,以便找出给定的单词是否有效(通常是纯文本文件就足够了,比如Linux上的/usr/share/dict/words )。

否则你可以依赖第三方拼写检查库来实现这一点。

答案 2 :(得分:2)

您可以使用其中一个GNU词典(如上所述的/usr/share/dict/words)并将其构建为适当的数据结构,以便根据您的性能需求快速查找和检查成员资格,例如<{3}}甚至只需directed acyclic word graph就足够了。

答案 3 :(得分:1)

对于初学者,你需要一个单词列表。 (/usr/share/dict/words也许?)

您应该将单词列表读入std::set。然后,正确的拼写测试只需检查所有用户输入的单词是否在集合中。

答案 4 :(得分:-1)

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';
}