2014-02-14 144 views
1

如果在C++中检查字符是否是某个字母的字母? 一般来说,我需要的是这样的:如何检查一个字符是否是某个字母的字母?

bool is_german(wchar_t ch); 
bool is_russian(wchar_t ch); 
bool is_japanese(wchar_t ch); 

EDIT 1。我能否做到这一点,而不需要定义所有我需要的语言的所有字符集。或者,也许有一些图书馆有这样的一些这样的:

std :: vector alphabet = GetEnglishAlphabet(); //字母表= {L'一个 'L'B',L'C”,...}

EDIT 2。如果我发现

脚本QChar则::脚本()const的

+0

我不知道这是一个明确的概念。是英语吗?是'$'? –

+0

@DavidSchwartz,no。这是标点符号。 – VALOD9

+0

您是否要求提供'STL'或'C++ stdlib'类型的功能来检查特定字符是否是特定语言?还是你问如何推出自己的? – txtechhelp

回答

1

您可以使用<locale>中定义的std::isalpha。记住要设置正确的语言环境第一 http://www.cplusplus.com/reference/locale/isalpha/

编辑:这里

std::locale loc("en-US"); 
bool isAlpha1 = std::isalpha('a', loc); 
bool isAlpha2 = std::isalpha('&', loc); 
bool isAlpha3 = std::isalpha('1', loc); 
bool isAlpha4 = std::isalpha('Ж', loc); //cyrilic alphabet, but not US 

你就会发现语言的字符串:

http://msdn.microsoft.com/en-us/library/39cwe7zf.aspx

http://msdn.microsoft.com/en-US/goglobal/bb896001.aspx

+0

设置语言环境并检查特定字符“isalpha”是否不会告诉您该字符是否是特定语言。根据设置语言环境的方式(例如'LC_ALL'),设置语言环境不仅会影响本地功能。 – txtechhelp

+0

从链接阅读:'isalpha - 检查字符是否是字母'从调查问卷中读取:'如果一个字符是某个字母的字母,如何检查C++'在我看来,该函数给出了调查问卷想要的内容 – Enigma

+0

,std :: locale是一个包含语言环境信息的对象。它不影响或重置系统。 – Enigma

2

对于卷制自己的解决方案的人有兴趣,我会普遍预期是这样的:

vector<wchar_t> german = {... german chars ...}; 
vector<wchar_t> japanese = {... japanese chars ...}; 
vector<wchar_t> russian = {... russian chars ...}; 

bool is_in_alphabet(const vector<wchar_t>& language, wchar_t candidate) { 
    return std::find(language.begin(), language.end(), candidate) != language.end(); 
} 
+0

我不想定义所有的charachter集... – VALOD9

+0

我明白了......那么这就超出了我的专业领域,我不知道提供这种功能的语言库。 –

0

还有ICU库,具有ublock_getCode功能。不过要注意的是,你不能说出确切的语言,因为相同的字母用于不同的字母。

相关问题